Pandas/Python 中的分块、处理和合并数据集
Chunking, processing & merging dataset in Pandas/Python
有一个大数据集,包含一个字符串。
我只想通过 read_fwf 使用宽度打开它,像这样:
widths = [3, 7, ..., 9, 7]
tp = pandas.read_fwf(file, widths=widths, header=None)
它会帮助我,
但系统崩溃(适用于 nrows=20000)。然后我决定按块(例如 20000 行)来做,像这样:
cs = 20000
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
...: <some code using chunk>
我的问题是:在对块进行一些处理(标记行、删除或修改列)后,我应该在循环中做什么以合并(连接?)块回到 .csv 文件中?还是有别的办法?
我假设自从阅读了整个文件后
tp = pandas.read_fwf(file, widths=widths, header=None)
失败但分块读取有效,文件太大无法一次读取并且您遇到了 MemoryError。
在这种情况下,如果您可以分块处理数据,然后连接 CSV 中的结果,您可以使用chunk.to_csv
将CSV 写入块:
filename = ...
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
# process the chunk
chunk.to_csv(filename, mode='a')
注意mode='a'
以附加模式打开文件,这样每个文件的输出
chunk.to_csv
调用附加到同一个文件。
有一个大数据集,包含一个字符串。 我只想通过 read_fwf 使用宽度打开它,像这样:
widths = [3, 7, ..., 9, 7]
tp = pandas.read_fwf(file, widths=widths, header=None)
它会帮助我
cs = 20000
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
...: <some code using chunk>
我的问题是:在对块进行一些处理(标记行、删除或修改列)后,我应该在循环中做什么以合并(连接?)块回到 .csv 文件中?还是有别的办法?
我假设自从阅读了整个文件后
tp = pandas.read_fwf(file, widths=widths, header=None)
失败但分块读取有效,文件太大无法一次读取并且您遇到了 MemoryError。
在这种情况下,如果您可以分块处理数据,然后连接 CSV 中的结果,您可以使用chunk.to_csv
将CSV 写入块:
filename = ...
for chunk in pd.read_fwf(file, widths=widths, header=None, chunksize=ch)
# process the chunk
chunk.to_csv(filename, mode='a')
注意mode='a'
以附加模式打开文件,这样每个文件的输出
chunk.to_csv
调用附加到同一个文件。