合并熊猫 groupBy 对象

我有一个 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,export

2000,ind,chn,2146,2

2000,ind,chn,4132,7

2001,ind,chn,2146,3

2001,ind,chn,4132,10

2002,ind,chn,2227,7

2002,ind,chn,4132,7

2000,ind,aus,7777,19

2001,ind,aus,2146,30

2001,ind,aus,4132,12

2002,ind,aus,4133,30

2000,aus,ind,4132,6

2001,aus,ind,2146,8

2001,chn,aus,1777,9

2001,chn,aus,1977,31

2001,chn,aus,1754,12

2002,chn,aus,8987,7

2001,chn,aus,4879,3

2002,aus,chn,3489,7

2002,chn,aus,2092,30

2002,chn,aus,4133,13

2002,aus,ind,0193,6

2002,aus,ind,0289,8

2003,chn,aus,0839,9

2003,chn,aus,9867,31

2003,aus,chn,3442,3

2004,aus,chn,3344,17

2005,aus,chn,3489,11

2001,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  year

aus     ind   2000     6

              2001     8

chn     aus   2001    40

ind     aus   2000    19

              2001    42

              2002    30

        chn   2000     9

              2001    13

              2002    14

Name: export, dtype: int64

origin  dest  year

aus     chn   2002     7

              2003     3

              2004    17

              2005    11

        ind   2001    17

              2002    14

chn     aus   2001    15

              2002    50

              2003    40

Name: export, dtype: int64

如何合并两个 GroupBy 对象?


合并它们会不会再次在大数据中产生内存问题?通过看数据的性质来预测,如果正确合并行数肯定会减少至少 10-15 倍。


基本目标是:


鉴于原产国和目的地国,我需要绘制它们之间每年的总出口量。每次对整个数据进行查询都需要花费大量时间。


xd = chunk.loc[(chunk.origin == country1) & (chunk.dest == country2)]

因此,我想通过一次以 groupBy 方式排列它们来节省时间。


任何建议都非常感谢。


回首忆惘然
浏览 103回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python