Pandas在處理千萬行級別的數據中有非常高的實用價值,通過將文本數據讀取加載到內存中,在利用Pandas進行數據處理運算,效率非常高。(Excel表適合處理幾十萬行級別的數據,Pandas則適用於處理千萬級別的數據)。
一般情況下千萬級別的數據動輒在幾個GB以上,因此建議電腦內存在16GB以上為佳。python在處理超過內存能力的大數據時,雖說程序不會中斷,但對運行效率影響很大。
在Pandas數據讀取和處理中一下代碼為常用代碼:
import pandas as pd '必選,加載pandas
import numpy as np '通常必選,如產生隨機數
import gc '可選,用於內存管理
import time '可選,如用於計時
reader = pd.read_table('file1.txt',header=None,names=['Col_Name1','Col_Name2',...],sep='|',index_col=0) '加載文件到內存,加載的方式可以通過參數進行靈活控制
reader[列號ID].value_counts().to_csv('文件名.csv') '類似於excel中的countif,運行效率比excel高出非常多!
reader[列ID號].sum() '對不同的列進行統計分析
pd.merge(df1,df2,on='MSISDN',how='outer').to_csv('outer.csv',index=False) '合並兩個dataframe,去交集,同時輸出到outer.csv文件,且不輸出索引號。
reader.drop_duplicates([列ID號]).to_csv('文件名.csv') '將除重后的數據存入單獨文件里
reader.sort([列ID號], ascending=False,其他條件...) '按某列值對數據進行排序
reader.loc(reader[列ID號] ==/!=/> '條件值', 其他條件...)
此外,除簡單統計外,Pandas還提供如下統計計算:
count | 非 NA 值的數量 |
describe | 針對 Series 或 DF 的列計算匯總統計 |
min , max | 最小值和最大值 |
argmin , argmax | 最小值和最大值的索引位置(整數) |
idxmin , idxmax | 最小值和最大值的索引值 |
quantile | 樣本分位數(0 到 1) |
sum | 求和 |
mean | 均值 |
median | 中位數 |
mad | 根據均值計算平均絕對離差 |
var | 方差 |
std | 標准差 |
skew | 樣本值的偏度(三階矩) |
kurt | 樣本值的峰度(四階矩) |
cumsum | 樣本值的累計和 |
cummin , cummax | 樣本值的累計最大值和累計最小值 |
cumprod | 樣本值的累計積 |
diff | 計算一階差分(對時間序列很有用) |
pct_change | 計算百分數變化 |