Python使用Pandas對大型csv檔案進行資料處理
今天接到一個新的任務,要對一個140多M的csv檔案進行資料處理,總共有170多萬行,嘗試了匯入本地的MySQL資料庫進行查詢,結果用Navicat匯入直接卡死....估計是XAMPP套裝裡面全預設配置的MySQL效能不給力,又嘗試用R搞一下吧結果發現光載入csv檔案就要3分鐘左右的時間,相當不給力啊,翻了翻萬能的知乎發現了Python下的一個神器包:Pandas(熊貓們?),載入這個140多M的csv檔案兩秒鐘就搞定,後面的分類彙總等操作也都是秒開,太牛逼了!記錄一下這次資料處理的過程:
使用Python3.6.4環境(對中文支援比較好),安裝Pandas包
pip install pandas
基本使用
import pandas as pd
import numpy as np #進行具體的sum,count等計算時候要用到的
df=pd.read_csv('d:/snp/nh23.csv') #這裡絕對路徑一定要用/,windows下也是如此,不加引數預設csv檔案首行為標題行
df.head() #檢視引入的csv檔案前5行資料
df[“播種面積”] #檢視指定列,後面跟[:5]檢視前5行資料
df[“調查物件程式碼”].str[:6] #獲取指定列前6位字串
df["ADDR"]=df["調查物件程式碼"].str[:6] #將上一行處理後的6位地址碼作為新列
gp=df.groupby(["ADDR","程式碼"])["播種面積"].sum() #根據ADDR和程式碼進行分組後對播種面積列進行sum求和計算
pv=df.pivot_table(["播種面積"],index="ADDR",columns="程式碼",margins=True,aggfunc=np.sum,fill_value=0) #資料透檢視,對播種面積列進行彙總計算,index為行,columns為列,margins=True增加一個全部行彙總,aggfunc=np.sum透檢視中對播種面積值進行sum計算,這裡np是開頭import的numpy as np,fill_value=0
pv.to_csv("d:/snp/test.csv") #寫入csv檔案