python - Pandas to_csv() 保存大数据帧速​​度慢

标签 python csv pandas dataframe

我猜这是一个简单的修复方法,但我遇到了一个问题,即使用 to_csv() 函数将 pandas 数据帧保存到 csv 文件需要将近一个小时。我将 anaconda python 2.7.12 与 pandas (0.19.1) 一起使用。

import os
import glob
import pandas as pd

src_files = glob.glob(os.path.join('/my/path', "*.csv.gz"))

# 1 - Takes 2 min to read 20m records from 30 files
for file_ in sorted(src_files):
    stage = pd.DataFrame()
    iter_csv = pd.read_csv(file_
                     , sep=','
                     , index_col=False
                     , header=0
                     , low_memory=False
                     , iterator=True
                     , chunksize=100000
                     , compression='gzip'
                     , memory_map=True
                     , encoding='utf-8')

    df = pd.concat([chunk for chunk in iter_csv])
    stage = stage.append(df, ignore_index=True)

# 2 - Takes 55 min to write 20m records from one dataframe
stage.to_csv('output.csv'
             , sep='|'
             , header=True
             , index=False
             , chunksize=100000
             , encoding='utf-8')

del stage

我已经确认硬件和内存都在工作,但这些是相当宽的表格(约 100 列),大部分是数字(十进制)数据。

谢谢,

最佳答案

添加我的小见识,因为“gzip”替代方案对我不起作用 - 尝试使用 to_hdf 方法。这大大减少了写入时间! (对于 100MB 的文件不到一秒 - CSV 选项在 30-55 秒之间执行此操作)

stage.to_hdf(r'path/file.h5', key='stage', mode='w')

关于python - Pandas to_csv() 保存大数据帧速​​度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660331/

相关文章:

python生成定义长度的随机列表

python - 从 geopy 获取东向和北向值

python - 使用 Python 检查文件是否为 CSV 格式

python - Pandas - 当 csv 中存在列时使用列

pandas - 如何使用 pandas 数据框计算列的平均脉冲计数?

python - 缺失数据的 Pandas 分类变量

python - 在 python 字典或数据框中查找共现

python - Python 中的矩阵加法 - 列表

ruby - 每行读取固定数量的管道分隔字段?

python - 读取缺少数据的表