之前資料特徵太多,獨熱編碼時記憶體不夠,想著分塊處理。但我選出一些關鍵特徵後就沒問題了,以下方法沒有實際用過,寫完後在這備忘下
from sklearn.model_selection import train_test_split
# 設定隨機種子
seed =
0np.random.seed(seed)
defget_train_test
(chunk, test_size=
0.95
, seed=seed)
:"""劃分訓練集測試集"""
y =1*
(chunk[
'target']==
"rep"
)# 對映
x = chunk.drop(
["target"
], axis=1)
x = pd.get_dummies(x, sparse=
true
)# 獨熱編碼,記憶體要求高
return train_test_split(x, y, test_size=test_size, random_state=seed)
# 分塊處理資料
df_reader = pd.read_csv(r'...\data\data.csv'
, iterator=
true
)xtrain_chunks, xtest_chunks, ytrain_chunks, ytest_chunks =
,,,[
]while
true
:try
: chunk = df_reader.get_chunk(
5000
)# 去掉整列相同的資料
chunk .loc[:,
(chunk != chunk .iloc[0]
).any()]
xtrain, xtest, ytrain, ytest = get_train_test(chunk)
print
('iteration: %d'
%len
(xtrain_chunks)
)except
:print
('finished'
)break
xtrain = pd.concat(xtrain_chunks, ignore_index=
true
)xtest = pd.concat(xtest_chunks, ignore_index=
true
)ytrain = pd.concat(ytrain_chunks, ignore_index=
true
)ytest = pd.concat(ytest_chunks, ignore_index=
true
)
pandas處理資料
pd.read csv path to file.txt header 0,names ab index 0 names columns這個可以不寫,制定索引列是第一列,這樣就沒有序號 np.tofile d python np.txt 類似於二維列表 充分利用map函式 df.a df.a.map...
pandas 資料處理
pandas中資料可以分為series,dataframe,panel分別表示一維至三維資料。其中在構造時,index表示行名,columns表示列名 構造方式 s pd.series data index index s pd series np random randn 5 index a b ...
Pandas 處理缺失資料
import numpy as np import pandas as pd from pandas import series,dataframes series a b np.nan,c d pd.isnull s 0 false 1 false 2 true 3 false 4 false d...