pandas資料結構介紹
主要兩種資料結構:series和dataframe.
series
series是一種類似於一維陣列的物件,由一組資料(各種numpy資料型別)+資料標籤(即索引)組成。
#series字串的表現形式:索引在左,值在右邊。直接傳入一組資料
from pandas import
series,dataframe
obj=series([4,2,3])
obj#
series的values和index屬性獲取陣列表示形式和索引物件
obj.values
obj.index
不為資料指定索引,自動建立乙個0~n-1的整數型索引。
series的index和values的元素之間雖然存在對應關係,但是與字典的對映不同。index和values實際上仍為互相獨立的ndarray陣列.
#建立乙個對各個資料點進行標記索引的series
obj2=series([4,2,3],index=['
a','
b','c'
])obj2
obj2.index
#通過索引的方式選取series中的單個或者一組值
obj2['a'
]obj2[['a
','c
','b']]
obj2['d
']=6
#對陣列進行運算保留索引和值之間的關係
obj2
obj2+obj2
obj2[obj2>2]
obj2*2
#將series看成乙個定長的有序字典,它是索引值到資料值的乙個對映'b
'inobj2'e
'inobj2
#通過字典來建立series
#只傳入乙個字典,則結果series中的索引就是原字典中的鍵。
sdata=
obj3=series(sdata)
obj3
states=['sdata中和states索引相匹配的三個值會被找出來並放到相應的位置上,找不到「california"對應的sdata值,其結果就為nan。在pandas中,nan用於表示缺失或na值。california
','ohio
','oregon
','texas']
obj4=series(sdata,index=states)
obj4
#series最重要的乙個功能:在算術運算中會自動對齊不同索引的資料。(換句話說就是series在進行算術運算時,index會自動對齊)pandas的isnull函式、notnull函式用於檢測缺失資料
pd.isnull(obj4)
pd.notnull(obj4)
#series也有類似的例項方法
obj4.isnull()
obj3dataframeobj4
obj3+obj4
#會發現'california'和'utah'索引對應的資料值是nan
#name屬性
#series本身以及其索引都有name屬性
obj4.name='
population
'obj4.index.name='
state
'obj4
#通過賦值的方式就地修改series的索引
obj.index=['
bob','
steve
','jeff']
obj
dataframe是乙個**型資料結構,含有一組有序的列,每列可以是不同的值的型別。基本上可以把dataframe看成乙個共享同乙個index的series的集合。
dataframe的構造方法與series類似,只不過同時接受一條一維資料來源,每一條都會成為單獨的一列。
建立dataframe
最常用的是直接傳入乙個由等長列表或numpy陣列組成的字典。
data=df=dataframe(data)
df
結果會自動加上索引,且全部列會被有序排列。
雖然引數data看起來是個字典,但是字典的鍵並非充當dataframe的index的角色,而是series的「name」屬性。
#如果指定了列序列,則dataframe的列會按照指定順序進行排列:構造較為完整的dataframe的引數:
dataframe(data=none,index=none,columns=none)
#columns即「name」
dataframe(data,columns=['缺失值由nan補上。year
','state
','pop'])
#如果傳入的列找不到,就會產生na值
df=dataframe(data,index=['
one','
two','
three
','four
','fiva'],
columns=['
year
','state
','pop
','debt
'])
df.indexdataframe 面向行和面向列的操作基本上是平衡的,任意抽出一列都是series。df.columns
type(df[
'debt
'])
將dataframe的列獲取為乙個series
#注意,返回的series擁有原dataframe 相同的索引,且其name屬性也已經被相應地設定好。兩者等價
df['
state']
df.state
獲取行行也可以使用位置或名稱的方式進行獲取,使用索引欄位ix
df.ix['列可以通過賦值的方式進行修改。three
']
#將列表或陣列進行賦值給某個列時,其長度必須跟dataframe的長度相匹配。如果賦值的時乙個series,就會精確匹配dataframe的索引,所有的空位都將被填上缺失值:對空列進行賦值
df['
debt
']=16.5df[
'debt
']=np.arange(5.)
val=series([-1.2,-1.5,-1.7],index=['為不存在的列賦值會建立出乙個新列。關鍵字del用於刪除列:two','
four
','fiva'])
df['
debt
']=val
df
df['另一種常見的資料形式是巢狀字典,將其傳給dataframe,被解釋為:外層字典的鍵作為列,內層字典的鍵作為索引(也可以顯示指定索引)eastern
']=df.state=='
ohino
'del df['
eastern']
df.columns
pop=,'ohio
':}frame=pd.dataframe(pop)
#對frame進行轉置,內層字典的鍵會被合併、排序以形成最終的索引
frame.t
#和series一樣,values屬性也會以二維ndarray的形式分返回dataframe中的資料:顯示指定索引
dataframe(pop,index=[2001,2002,2003])
#由series組成的字典
pdata=
#設定dataframe的index和columns的name屬性,也會顯示出來
frame3.index.name='
year
'frame3.columns.name='
state
'
frame3.values
資料結構讀書筆記
首先有個關於指標的問題 如果函式傳進來乙個指標 p,函式裡操作p不會影響原來的值,而如果有 或者 才會改變 比如 malloc的時候傳入指標的指標才行 o 1 刪除節點時末尾必須要便利一遍 刪除頭指標要變為刪除第二個節點。1.o 1 刪除指定位置的節點 如果為最後乙個節點還是必須遍歷一遍 2.倒數第...
《資料結構》讀書筆記
2010年9月2日開始研究 資料結構基礎 這本書。為什麼要說是研究呢,一是覺得研究這個詞比較賞心悅目,總比 看 閱讀 之類的好聽多了。二是真的想把資料結構學好。488頁,看來有忙活的了!第一章 基本概述 生命週期各階段描述及理解 1.需求階段 所有人規模程式設計專案,都是從確定規範宣告開始,規範宣告...
《大話資料結構》讀書筆記 一
2.線性結構 線性結構 線性結構中的資料元素之間是一對一的關係 3.樹形結構 樹形就夠 樹形結構中的資料元素之間存在一種一對多的層次關係。4.圖形結構 圖形結構 圖形結構的資料元素是多對多的關係 我們在用示意圖表示資料的邏輯結構時,需要注意兩點 a.將每乙個資料元素看做乙個結點,用圓圈表示。b.元素...