为了账号安全,请及时绑定邮箱和手机立即绑定

合并熊猫 groupBy 对象

合并熊猫 groupBy 对象

回首忆惘然 2021-06-15 13:12:26
我有一个 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 方式排列它们来节省时间。任何建议都非常感谢。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信