python - 如何导入大型 csv 文件并执行操作
问题描述
我在打开大型 csv 文件(>5GB)并对其执行一些简单操作时遇到问题。我做了这个代码:
import pandas as pd
import numpy as np
import os
import glob
os.chdir('C:\\Users\\data')
df = pd.read_csv('myfile.csv', low_memory=False, header=None, names= ['column1','column2', 'column3'])
df
即使设置 low_meemory false 它也不起作用。我使用了在此站点中找到的以下代码,但它也不起作用。
import pandas as pd
import numpy as np
import os
import glob
os.chdir('C:\\Users\\data')
mylist = []
for chunk in pd.read_csv('SME_all.csv', sep=';', chunksize=20000):
mylist.append(chunk)
big_data = pd.concat(mylist, axis= 0)
del mylist
df = pd.read_csv('myfile.csv', low_memory=False, header=None,
error_bad_lines = False, names=['column1','column2', 'column3'])
df
有什么建议吗?我是否应该考虑使用其他应用程序,例如 Apache Spark?
解决方案
有很多方法。
也许最简单的方法是将您的 CSV 拆分为多个文件。这仅在您不需要以任何方式聚合数据(例如 groupby)时才有效。
您可以尝试在导入时指定 dtypes,否则 Pandas 可能会将列解释为会占用更多内存的对象。
您可以使用 python 的内置 CSV 阅读器迭代 CSV,并在每一行上执行操作,如果这是您尝试做的工作类型。
您可以查看 Dask,或在 Google 的 dataproc 或 Azure 的 databricks 上使用 PySpark。
推荐阅读
- php - PHP 标头无论如何都不包含变量
- rtc - 从现有组件创建新组件而不丢失历史
- google-app-engine - 在本地测试我的 Google App Engine Flex(无需部署)
- jquery-ui - jQuery UI 1.12 – 通过链接或 URL 激活选项卡
- r - 刻面排序,然后标记 x 轴
- memory - 使用 \x 表示法在内存中存储 NOPs 指令
- c++ - 将整数数组作为参数传递的 C++ 错误
- matlab - 什么命令在 Matlab 中执行 str2double 的逆运算?
- python - Pygame 游戏导致分段错误(pygame 降落伞)
- python - 熊猫根据具有重复分组对的列分组的指标计算差异