小编Pus*_*osh的帖子

合并熊猫 groupBy 对象

我有一个 CSV 格式的 2.92 亿行 (6GB) 的庞大数据集。Panda 的read_csv功能不适用于这么大的文件。因此,我正在使用以下代码以迭代方式读取小块(1000 万行)中的数据:

for chunk in pd.read_csv('hugeData.csv', chunksize=10**7):
       #something ...
Run Code Online (Sandbox Code Playgroud)

在#something 中,我根据某些列对行进行分组。所以在每次迭代中,我都会得到新的 groupBy 对象。我无法合并这些 groupBy 对象。

一个较小的虚拟示例如下:

dummy.csv是一个 28 行的 CSV 文件,是某年某些国家之间的贸易报告。sitc是一些产品代码,export是出口金额,约为 10 亿美元。(请注意,数据是虚构的)

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
Run Code Online (Sandbox Code Playgroud)

我将它分成两个 14 行的数据,并根据年份、来源、目的地对它们进行分组。

 for chunk in pd.read_csv('dummy.csv', chunksize=14):
       xd = chunk.groupby(['origin','dest','year'])['export'].sum();
       print(xd)
Run Code Online (Sandbox Code Playgroud)

结果 …

python performance bigdata pandas pandas-groupby

5
推荐指数
1
解决办法
6350
查看次数

标签 统计

bigdata ×1

pandas ×1

pandas-groupby ×1

performance ×1

python ×1