我有一个 CSV 格式的 2.92 亿行 (6GB) 的庞大数据集。Panda 的read_csv功能不适用于这么大的文件。因此,我正在使用以下代码以迭代方式读取小块(1000 万行)中的数据:for chunk in pd.read_csv('hugeData.csv', chunksize=10**7): #something ...在#something 中,我根据某些列对行进行分组。所以在每次迭代中,我都会得到新的 groupBy 对象。我无法合并这些 groupBy 对象。一个较小的虚拟示例如下:这dummy.csv是一个 28 行的 CSV 文件,是某年某些国家之间的贸易报告。sitc是一些产品代码,export是出口金额在十亿美元左右。(请注意,数据是虚构的)year,origin,dest,sitc,export2000,ind,chn,2146,22000,ind,chn,4132,72001,ind,chn,2146,32001,ind,chn,4132,102002,ind,chn,2227,72002,ind,chn,4132,72000,ind,aus,7777,192001,ind,aus,2146,302001,ind,aus,4132,122002,ind,aus,4133,302000,aus,ind,4132,62001,aus,ind,2146,82001,chn,aus,1777,92001,chn,aus,1977,312001,chn,aus,1754,122002,chn,aus,8987,72001,chn,aus,4879,32002,aus,chn,3489,72002,chn,aus,2092,302002,chn,aus,4133,132002,aus,ind,0193,62002,aus,ind,0289,82003,chn,aus,0839,92003,chn,aus,9867,312003,aus,chn,3442,32004,aus,chn,3344,172005,aus,chn,3489,112001,aus,ind,0893,17我将它分成两个 14 行的数据,并根据年份、来源、目的地对它们进行分组。 for chunk in pd.read_csv('dummy.csv', chunksize=14): xd = chunk.groupby(['origin','dest','year'])['export'].sum(); print(xd)结果 :origin dest yearaus ind 2000 6 2001 8chn aus 2001 40ind aus 2000 19 2001 42 2002 30 chn 2000 9 2001 13 2002 14Name: export, dtype: int64origin dest yearaus chn 2002 7 2003 3 2004 17 2005 11 ind 2001 17 2002 14chn aus 2001 15 2002 50 2003 40Name: export, dtype: int64如何合并两个 GroupBy 对象?合并它们会不会再次在大数据中产生内存问题?通过看数据的性质来预测,如果正确合并行数肯定会减少至少 10-15 倍。基本目标是:鉴于原产国和目的地国,我需要绘制它们之间每年的总出口量。每次对整个数据进行查询都需要花费大量时间。xd = chunk.loc[(chunk.origin == country1) & (chunk.dest == country2)]因此,我想通过一次以 groupBy 方式排列它们来节省时间。任何建议都非常感谢。
添加回答
举报
0/150
提交
取消