有時候到手的資料基本是固定分隔符分隔的幾個檔案,需要重裡面做一些資料統計,比如去重,計算某一列的和,兩個檔案的並集等等,如果能夠像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執行

import pandas #引入pandas
papa=pandas.read_csv('papa.txt',sep='\t') #載入papa.txt,指定它的分隔符是 \t
papa.head() #顯示資料的前幾行
複製程式碼
可以看到載入的結果直觀的用表格展示

如何知道剛載入的資料有幾行?有幾列?
執行指令如下
rowNum=papa.shape[0] #不包括表頭
colNum=papa.columns.size
複製程式碼
結果為

如何根據一列對整個資料進行去重?
執行指令如下
uPapa=papa.drop_duplicates(['paxi_id'])
複製程式碼
結果如下

如何獲取一列的去重的值?去重後有多少個?
執行指令如下
uPaxiId=papa['paxi_id'].unique()
print("uPaxiId:",uPaxiId)
totalUPaxiIdNum=uPaxiId.size
print("num:",totalUPaxiIdNum)
複製程式碼
執行結果如下

如何計算一列的和?
執行指令如下
papa['grade'].sum()
複製程式碼
結果如下

如何過濾特定的值的行?
執行指令如下
papa[ ( papa['grade'] == 50 ) | ( papa['grade'] == 100 ) ]
複製程式碼
結果如下

如何計算某一列各個取值的個數?
執行指令如下
gPapa=papa.groupby('grade').size()
複製程式碼
結果如下

如何計算其中兩個或者所有的和?
執行指令如下
v=gPapa[50]+gPapa[100]
print("兩個的和:",v)
print("總和:",gPapa.sum())
複製程式碼
結果如下

如何用圖形表示各個值?
執行指令如下
import matplotlib.pyplot as plt
fig=plt.figure()
gPapa.plot(kind='bar',grid=True) #bar 和 barh 能切換x軸,y軸
plt.show() #在需要顯示的時候呼叫,會一次把所有的圖都畫出來
複製程式碼
結果如下

如何對兩個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
複製程式碼
結果如下

匯出字典的圖形
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()
複製程式碼