首页 > 解决方案 > 如何导入大型 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?

标签: pythonbigdata

解决方案


有很多方法。

也许最简单的方法是将您的 CSV 拆分为多个文件。这仅在您不需要以任何方式聚合数据(例如 groupby)时才有效。

您可以尝试在导入时指定 dtypes,否则 Pandas 可能会将列解释为会占用更多内存的对象。

您可以使用 python 的内置 CSV 阅读器迭代 CSV,并在每一行上执行操作,如果这是您尝试做的工作类型。

您可以查看 Dask,或在 Google 的 dataproc 或 Azure 的 databricks 上使用 PySpark。


推荐阅读