1. 程式人生 > >Python使用Pandas對大型csv檔案進行資料處理

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位地址碼作為新列

ADDR插入

 

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是開頭importnumpy as np,fill_value=0

對空值進行0替換,否則沒有資料會顯示NaN

 

pv.to_csv("d:/snp/test.csv")      #寫入csv檔案