pandas操作txt檔案的方便之處

爬蜥發表於2018-06-21

有時候到手的資料基本是固定分隔符分隔的幾個檔案,需要重裡面做一些資料統計,比如去重,計算某一列的和,兩個檔案的並集等等,如果能夠像sql一樣操作txt檔案就好了,這就是pandas帶來的好處

如何載入txt檔案?

示例檔案資料 papa.txt

 paxi_id grade
  1       50
  2       50
  3       100
  4       200
  3       100
  5       100
 
複製程式碼

安裝好jupyter ,在檔案目錄中執行jupyter notebook,在開啟的瀏覽器介面上,選擇python執行

pandas操作txt檔案的方便之處
在開啟的介面上,執行載入的命令

import pandas #引入pandas
papa=pandas.read_csv('papa.txt',sep='\t') #載入papa.txt,指定它的分隔符是 \t
papa.head() #顯示資料的前幾行
複製程式碼

可以看到載入的結果直觀的用表格展示

pandas操作txt檔案的方便之處

如何知道剛載入的資料有幾行?有幾列?

執行指令如下

rowNum=papa.shape[0] #不包括表頭
colNum=papa.columns.size
複製程式碼

結果為

pandas操作txt檔案的方便之處

如何根據一列對整個資料進行去重?

執行指令如下

uPapa=papa.drop_duplicates(['paxi_id'])
複製程式碼

結果如下

pandas操作txt檔案的方便之處

如何獲取一列的去重的值?去重後有多少個?

執行指令如下

uPaxiId=papa['paxi_id'].unique()
print("uPaxiId:",uPaxiId)
totalUPaxiIdNum=uPaxiId.size
print("num:",totalUPaxiIdNum)
複製程式碼

執行結果如下

pandas操作txt檔案的方便之處

如何計算一列的和?

執行指令如下

papa['grade'].sum()
複製程式碼

結果如下

pandas操作txt檔案的方便之處

如何過濾特定的值的行?

執行指令如下

papa[ ( papa['grade'] == 50 ) | ( papa['grade'] == 100 ) ]
複製程式碼

結果如下

pandas操作txt檔案的方便之處

如何計算某一列各個取值的個數?

執行指令如下

gPapa=papa.groupby('grade').size()
複製程式碼

結果如下

pandas操作txt檔案的方便之處

如何計算其中兩個或者所有的和?

執行指令如下

v=gPapa[50]+gPapa[100]
print("兩個的和:",v)
print("總和:",gPapa.sum())
複製程式碼

結果如下

pandas操作txt檔案的方便之處

如何用圖形表示各個值?

執行指令如下

import matplotlib.pyplot as plt
fig=plt.figure()
gPapa.plot(kind='bar',grid=True) #bar 和 barh 能切換x軸,y軸
plt.show() #在需要顯示的時候呼叫,會一次把所有的圖都畫出來
複製程式碼

結果如下

pandas操作txt檔案的方便之處

如何對兩個txt的檔案根據一列做join?

另一個檔案為xixi.txt

paxi_id	type
1	3
2	4
3	3
4	4
5	3
複製程式碼

執行指令如下

xixi=pandas.read_csv('xixi.txt',sep='\t')
uXixi=xixi.drop_duplicates(['paxi_id'])
pandas.merge(uPapa,uXixi,on=['paxi_id']) #join
複製程式碼

結果如下

pandas操作txt檔案的方便之處

匯出字典的圖形

period={'1':100,'2':200,'3':150}
import matplotlib.pyplot as plt
fig=plt.figure()
plt.bar(range(len(period)),period.values(),align='center')
plt.xticks(range(len(period)),list(period.values())) 
plt.show()
複製程式碼

附pandas官方文件

pandas.pydata.org/pandas-docs… 有教程~

相關文章