我正在预处理一个具有840.000个样本和400多个特征的大型数据集。我需要将数据帧存储在单个csv文件中以减少内存。因此,我应该避免使用pd.concat,因为它会占用大量内存
我有不同的数据框,具体取决于变量的性质。如何按列追加CSV文件?似乎是:
df_1.to_csv('file.csv', index=False)
df_2.to_csv('file.csv', mode='a', index=False)
df_3.to_csv('file.csv', mode='a', index=False)
创建文件file.csv,然后将df_2和df_3附加在彼此之间。如何按列而不是按行附加它?
示例:
DF1
row1: variable_a variable_b
row2: 0 1
row3: 1 1
row839999: 0 1
DF2:
row1: variable_c variable_d
row2: 0 1
row3: 1 1
row839999: 0 1
最终DF
row1: variable_a variable_b variable_c variable_d
row2: 0 1 0 1
row3: 1 1 1 1
row839999: 0 1 0 1
答案 0 :(得分:0)
如果数据位于数据库中,则应使用SQL进行合并,并使用pandas read_sql读取需要的内容。另外,您可以查看Dask(https://dask.pydata.org/en/latest/139)。我没有经验,只是向您指出可能有用的资源。
Dask DataFrame是一个大型并行数据帧,由许多较小的Pandas数据帧组成,并沿索引分割。那可能会解决您的MemoryError问题。试试吧。
答案 1 :(得分:0)
我的解决方案是转换变量的类型。首先,变量为int32,然后转换为int8。然后,它并不需要那么多时间。