我有一個 CSV 格式的 2.92 億行 (6GB) 的龐大數(shù)據(jù)集。Panda 的read_csv功能不適用于這么大的文件。因此,我正在使用以下代碼以迭代方式讀取小塊(1000 萬行)中的數(shù)據(jù):for chunk in pd.read_csv('hugeData.csv', chunksize=10**7): #something ...在#something 中,我根據(jù)某些列對行進行分組。所以在每次迭代中,我都會得到新的 groupBy 對象。我無法合并這些 groupBy 對象。一個較小的虛擬示例如下:這dummy.csv是一個 28 行的 CSV 文件,是某年某些國家之間的貿(mào)易報告。sitc是一些產(chǎn)品代碼,export是出口金額在十億美元左右。(請注意,數(shù)據(jù)是虛構(gòu)的)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 行的數(shù)據(jù),并根據(jù)年份、來源、目的地對它們進行分組。 for chunk in pd.read_csv('dummy.csv', chunksize=14): xd = chunk.groupby(['origin','dest','year'])['export'].sum(); print(xd)結(jié)果 :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 對象?合并它們會不會再次在大數(shù)據(jù)中產(chǎn)生內(nèi)存問題?通過看數(shù)據(jù)的性質(zhì)來預測,如果正確合并行數(shù)肯定會減少至少 10-15 倍?;灸繕耸牵鸿b于原產(chǎn)國和目的地國,我需要繪制它們之間每年的總出口量。每次對整個數(shù)據(jù)進行查詢都需要花費大量時間。xd = chunk.loc[(chunk.origin == country1) & (chunk.dest == country2)]因此,我想通過一次以 groupBy 方式排列它們來節(jié)省時間。任何建議都非常感謝。
添加回答
舉報
0/150
提交
取消