Python在处理大文件(>;600 MB)和执行groupby时会导致桌面RAM崩溃

Python在处理大文件(>;600 MB)和执行groupby时会导致桌面RAM崩溃,python,pandas,Python,Pandas,我正在使用Pandas处理一个大的CSV文件(>600MB)。 并进行多次分组,以获取数据集中各种变量的频率统计数据(类似于SAS中的PROC FREQ)。但熊猫正在拖累这个系统。内存RAM使用率(由Python提供)高达4GB 我还有其他列(如金额、日期等),我想在这些列上启用统计信息 有没有一种方法可以让Pandas不加载到内存,而是在磁盘中处理它们,这样系统性能就不会下降? 或者任何有效处理的建议都很好 代码如下: colNamesOutputFile=["PROGRAM_NAME", "

我正在使用Pandas处理一个大的CSV文件(>600MB)。 并进行多次分组,以获取数据集中各种变量的频率统计数据(类似于SAS中的PROC FREQ)。但熊猫正在拖累这个系统。内存RAM使用率(由Python提供)高达4GB

我还有其他列(如金额、日期等),我想在这些列上启用统计信息

有没有一种方法可以让Pandas不加载到内存,而是在磁盘中处理它们,这样系统性能就不会下降? 或者任何有效处理的建议都很好

代码如下:

colNamesOutputFile=["PROGRAM_NAME", "TEST_GROUP", "NAME", "OFFER"]
inputDF=pd.read_csv(InputFile
, skiprows=1
, names=colNamesOutputFile
, converters={'PROGRAM_NAME': convert_to_string, 'TEST_GROUP': convert_to_string, 'NAME': convert_to_string, 'OFFER': convert_to_string}
, index_col=False)
inputDF1SUM = pd.DataFrame({'Count' : inputDF.groupby(['PROGRAM_NAME','TEST_GROUP']).size()}).reset_index()
inputDF2SUM = pd.DataFrame(inputDF.groupby('NAME')).reset_index()
inputDF3SUM = pd.DataFrame(inputDF.groupby('OFFER')).reset_index()
print(inputDF1SUM)
print(inputDF2SUM)
print(inputDF3SUM)

您可以分块读取csv,对于每个块,您可以进行处理并移动到下一个块,这样您就不会在内存中加载太多内容

chunksize = 10 ** 4
pieces = []
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)
    pieces.extend([chunk.groupby(['PROGRAM_NAME','TEST_GROUP'])])
你可以在网上阅读更多


所有这些都是假设您不需要一次性将整个数据集存储在内存中。

谢谢,这非常有用。我还有一个问题,我是否仍然能够使用groupby…我想我必须循环并不断添加groupby摘要variables@sutirmukherjee,Iv'e在回答时更新了我的代码,你可以这样做。如果分块阅读不能达到你的目的,那么你应该试试dask