最近在處理的一個(gè)數(shù)據(jù)
讀取數(shù)據(jù):分塊讀取處理
方式1
_reader = pd.read_csv(path, iterator = True)
#前47000行數(shù)據(jù)
chunkSize = 47000
print 'preproc',chunkSize
reader = _reader.get_chunk(chunkSize)
方式2
reader = pd.read_table('tmp.sv', sep='|', chunksize=4)
for chunk in reader:
執(zhí)行處理數(shù)據(jù)語句
方式3:
方式1加入try except
#使用不同分塊大小來讀取再調(diào)用 pandas.concat 連接DataFrame搭独,chunkSize設(shè)置在1000萬條左右速度優(yōu)化比較明顯。
loop = True
chunkSize = 100000
chunks = []
while loop:
try:
chunk = reader.get_chunk(chunkSize)
chunks.append(chunk)
except StopIteration:
loop = False
print "Iteration is stopped."
df = pd.concat(chunks, ignore_index=True)
處理非數(shù)字型
datacleaner 的autoclean函數(shù)
使用數(shù)字等效編碼非數(shù)字變量(例如唉俗,帶有字符串的分類變量)
來源:https://github.com/rhiever/datacleaner
處理離散值
離散特征的編碼分為兩種情況:
1配椭、離散特征的取值之間沒有大小的意義,比如color:[red,blue],那么就使用one-hot編碼
2股缸、離散特征的取值有大小的意義,比如size:[X,XL,XXL],那么就使用數(shù)值的映射{X:1,XL:2,XXL:3}
http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling
pandas使用get_dummies進(jìn)行one-hot編碼
pandas.get_dummies 離散特征編碼
導(dǎo)出CSV追加寫入
待補(bǔ)充
參考:
使用Python Pandas處理億級數(shù)據(jù)
Python如何處理大數(shù)據(jù)(知識整理)
python大規(guī)模數(shù)據(jù)處理技巧之一:數(shù)據(jù)常用操作
使用pandas進(jìn)行數(shù)據(jù)清洗