合并 多个dataframe_什么是Pandas的DataFrame?
1. 什么是DataFrame
DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由series組成的字典(共用同一個(gè)索引)
2. DateFrame特點(diǎn)
DataFrame中面向行和面向列的操作基本是平衡的。
DataFrame中的數(shù)據(jù)是以一個(gè)或多個(gè)兩維塊存放的(而不是列表、字典或別的一維數(shù)據(jù)結(jié)構(gòu))。
3. 創(chuàng)建DataFrame
最常用的一種是直接傳入一個(gè)由等長列表或NumPy數(shù)組組成的字典:
In [33]: data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}
In [34]: frame=DataFrame(data)
#結(jié)果DataFrame會(huì)自動(dòng)加上索引(跟Series一樣),且全部列會(huì)被有序排列:
In [35]: frame
Out[35]:
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
4. 指定列順序
#使用clolumns指定列順序
In [36]: DataFrame(data,columns=['year','state','pop'])
Out[36]:
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
5. NA值
跟Series一樣,如果傳入的列在數(shù)據(jù)中找不到,就會(huì)產(chǎn)生NA值:
In [37]: DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])
Out[37]:
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
6. 類似字典(或?qū)傩?#xff09;標(biāo)記
通過類似字典標(biāo)記的方式或?qū)傩缘姆绞?#xff0c;可以將DataFrame的列獲取為一個(gè)Series:
In [39]: frame['state'] #或frame.state
Out[39]:
0 Ohio
1 Ohio
2 Ohio
3 Nevada
4 Nevada
Name: state, dtype: object
7. 索引字段ix(行)
注意,返回的Series擁有原DataFrame相同的索引,且其name屬性也已經(jīng)被相應(yīng)地設(shè)置好了。行也可以通過位置或名稱的方式進(jìn)行獲取,比如用索引字段ix:
In [44]: frame2.ix['one']
Out[44]:
year 2000
state Ohio
pop 1.5
debt NaN
Name: one, dtype: object
8. 通過賦值修改列
列可以通過賦值的方式進(jìn)行修改。例如,可以給那個(gè)空的‘debt’列賦上一個(gè)標(biāo)量值或一組值:
In [45]: frame2['debt']=16.5 #或frame2.debt
In [46]: frame2
Out[46]:
year state pop debt
one 2000 Ohio 1.5 16.5
two 2001 Ohio 1.7 16.5
three 2002 Ohio 3.6 16.5
four 2001 Nevada 2.4 16.5
five 2002 Nevada 2.9 16.5
In [50]: frame2.debt=np.arange(5.)
In [51]: frame2
Out[51]:
year state pop debt
one 2000 Ohio 1.5 0.0
two 2001 Ohio 1.7 1.0
three 2002 Ohio 3.6 2.0
four 2001 Nevada 2.4 3.0
five 2002 Nevada 2.9 4.0
將列表或數(shù)組賦值給某個(gè)列時(shí),其長度必須跟DataFrame的長度相匹配。如果賦值的是一個(gè)Series,就會(huì)精確匹配DataFrame的索引,所有的空位都將被填上缺失值:
In [52]: val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])
In [53]: frame2['debt']=val
In [54]: frame2
Out[54]:
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 -1.2
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 -1.5
five 2002 Nevada 2.9 -1.7
9. 關(guān)鍵字del刪除列
為不存在的列賦值會(huì)創(chuàng)建出一個(gè)新列。關(guān)鍵字del用于刪除列:
In [55]: frame2['eastern']=frame2.state=='Ohio'
In [56]: frame2
Out[56]:
year state pop debt eastern
one 2000 Ohio 1.5 NaN True
two 2001 Ohio 1.7 -1.2 True
three 2002 Ohio 3.6 NaN True
four 2001 Nevada 2.4 -1.5 False
five 2002 Nevada 2.9 -1.7 False
In [57]: del frame2['eastern']
In [58]: frame2.columns
Out[58]: Index(['year', 'state', 'pop', 'debt'], dtype='object')
警告:通過索引方式返回的列只是相應(yīng)數(shù)據(jù)的視圖而已,并不是副本。因此,對(duì)返回的Series所做的任何就地修改全都會(huì)反映到源DataFrame上。通過Series的copy方法即可顯示地賦值列。
10. 嵌套字典
嵌套字典(也就是字典的字典):
In [62]: pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:17,2002:3.6}}
#如果將它傳給DataFrame,它就會(huì)被解釋為:外層字典的鍵作為列,內(nèi)層鍵則作為行索引:
In [63]: frame3=DataFrame(pop)
In [64]: frame3
Out[64]:
Nevada Ohio
2000 NaN 1.5
2001 2.4 17.0
2002 2.9 3.6
內(nèi)層字典的鍵會(huì)被合并、排序以形成最終的索引。如果顯式指定了索引,則不會(huì)這樣:
In [66]: DataFrame(pop,index=[2001,2002,2003])
Out[66]:
Nevada Ohio
2001 2.4 17.0
2002 2.9 3.6
2003 NaN NaN
由Series組成的字典差不多也是一樣的用法:
In [68]: pdata={'Ohio':frame3['Ohio'][:-1],'Nevada':frame3['Nevada'][:2]}
In [69]: DataFrame(pdata)
Out[69]:
Nevada Ohio
2000 NaN 1.5
2001 2.4 17.0
11. 轉(zhuǎn)置
In [65]: frame3.T
Out[65]:
2000 2001 2002
Nevada NaN 2.4 2.9
Ohio 1.5 17.0 3.6
12.索引對(duì)象
Pandas的索引對(duì)象負(fù)責(zé)管理軸標(biāo)簽和其他元數(shù)據(jù)(比如軸名稱等)。
Index對(duì)象是不可修改的(immutable),因此用戶不能對(duì)其進(jìn)行修改。
不可修改性非常重要,因?yàn)檫@樣才能使Index對(duì)象在多個(gè)數(shù)據(jù)結(jié)構(gòu)之間安全共享。
注意:雖然大部分用戶都不需要知道太多關(guān)于Index對(duì)象的細(xì)節(jié),但它們確實(shí)是pandas數(shù)據(jù)模型的重要組成部分。
「親,如果筆記對(duì)您有幫助,收藏的同時(shí),記得給點(diǎn)個(gè)贊、加個(gè)關(guān)注哦!感謝!」
「文中代碼均親測(cè)過,若有錯(cuò)誤之處,歡迎批評(píng)指正,一起學(xué)習(xí),一起成長!」
總結(jié)
以上是生活随笔為你收集整理的合并 多个dataframe_什么是Pandas的DataFrame?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 图片跑马灯动画,Imag
- 下一篇: 中国石油大学(华东)计算机科学与技术,2