pandas分块处理数据

之前数据特征太多,独热编码时内存不够,想着分块处理。但我选出一些关键特征后就没问题了,以下方法没有实际用过,写完后在这备忘下

from sklearn.model_selection import train_test_split

# 设置随机种子
SEED = 0
np.random.seed(SEED)

def get_train_test(chunk, test_size=0.95, SEED=SEED):
    """划分训练集测试集"""
    y = 1 * (chunk['target'] == "REP")  # 映射{"REP": 1, "DEM": 0}
    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)
        
        xtrain_chunks.append(xtrain)
        xtest_chunks.append(xtest)
        ytrain_chunks.append(ytrain)
        ytest_chunks.append(ytest)
        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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值