Pandas逐列分块

时间:2016-06-09 13:41:20

标签: python pandas optimization

我想读取一个大数据矩阵(目前正在测试90 * 85000,后来测试150000 * 850000)并对列进行一些操作。

为了加快我尝试分块的事情。这大大加快了(~100x)读取过程,但由于我必须连接用于列式操作的块,我在后续步骤中失去所有加速。

我的问题:
  - 有没有办法在列维度而不是行维度中添加块?
  - 对于我想要实现的目标,还有其他方法吗?

\编辑:一些定时运行:

  • 读取小文件:~10s
  • 读取小文件,'chunksize = 20':< 0.1 s
  • 读取小文件,手动实现逐列分块:~50秒 没有连接,~4分钟连接
  • 逐行阅读文件,并进行一些相当于熊猫做什么的后处理~13s

1 个答案:

答案 0 :(得分:0)

您可以将columnsrows

分块
def chunks(lst, chunksize):
    for i in range(0, len(lst), chunksize):
        yield lst[i:i+chunksize]

col_chunksize, row_chunksize = 1000, 1000
for use_cols in chunks(columns, col_chunksize):
    for chunk in pd.read_csv(file_path, chunksize=row_chunksize, use_cols=use_cols)
        process_chunk # e.g. pd.concat() to the process all rows of use_cols