python - 如何使用 Python 迭代地从大型 .csv 文件中提取和保存 .csv 数据块?
问题描述
我是 Python 新手,我尝试使用 pandas 读取一个大的 .csv 文件(具有数十万或可能数百万行;以及大约 15.000 列)。
我认为我可以做的是在一个新的 .csv 文件中创建并保存每个块,迭代地跨越所有块。我目前正在使用内存相对有限的笔记本电脑(大约 4 Gb,正在升级它),但我想知道是否可以在不更改设置的情况下做到这一点。或者,我可以将这个过程转移到具有大 RAM 的 pc 中并尝试更大的块,但我希望即使对于较短的行块也能做到这一点。
我已经看到我可以使用下面的代码快速处理数据块(例如 10.000 行和所有列)。但由于我是 Python 初学者,我只设法订购了第一块。我想在块之间迭代循环并保存它们。
import pandas as pd
import os
print(os.getcwd())
print(os.listdir(os.getcwd()))
chunksize = 10000
data = pd.read_csv('ukb35190.csv', chunksize=chunksize)
df = data.get_chunk(chunksize)
print(df)
export_csv1 = df.to_csv (r'/home/user/PycharmProjects/PROJECT/export_csv_1.csv', index = None, header=True)
解决方案
如果您没有对数据进行任何处理,那么您甚至不必将其存储在任何变量中。您可以直接进行。下面是 PFA 代码。希望这对您有所帮助。
import pandas as pd
import os
chunksize = 10000
batch=1
for chunk in pd.read_csv(r'ukb35190.csv',chunksize=chunk_size):
chunk.to_csv(r'ukb35190.csv'+str(batch_no)+'.csv',index=False)
batch_no+=1
推荐阅读
- angular - 将 Angular 项目从 7 升级到 8,现在无法在生产中运行
- sql - 查询在该行之前的给定时间范围 tr 中有 n 行的行
- python - 如何使用 python matplotlib 的艺术家层在条形图上显示百分比值
- c - 尝试在 C 中打印链接列表节点 - 仅打印最后一个节点?
- python - 如何解决 importError: no module named 'docX.api'; 'docx' 不是一个包
- javascript - 我无法将数据添加到 bootStrap 数据表
- java - 如何提高代码的性能?Java 中的 Selenium + JSON
- image - 检索网络资产时出错(颤振)
- ios - 我可以从 API 获取日期,但是当我填充单元格时,我的计数为零
- c++ - 使用 __uuidof 运算符会给出扩展使用警告