Python 在需要groupby操作时处理分块数据
我有一个数据集Python 在需要groupby操作时处理分块数据,python,pandas,pytables,hdfstore,Python,Pandas,Pytables,Hdfstore,我有一个数据集df,有三列:“String\u key\u val”,“Float\u other\u val1”,“Int\u other\u val2”。我想按键值分组,然后提取这些组的val1(分别为val2)之和。这是我的密码: df = pandas.read_csv('test.csv') grouped = df.groupby('String_key_val') series_calculus1 = grouped['Float_other_val1'].sum() series
df
,有三列:“String\u key\u val”
,“Float\u other\u val1”
,“Int\u other\u val2”
。我想按键值分组,然后提取这些组的val1
(分别为val2
)之和。这是我的密码:
df = pandas.read_csv('test.csv')
grouped = df.groupby('String_key_val')
series_calculus1 = grouped['Float_other_val1'].sum()
series_calculus2 = grouped['Int_other_val2'].sum()
res = pandas.concat([series_calculus1, series_calculus2], axis=1)
res.to_csv('output_test.csv')
我的问题是:我的入口数据集是10GB,我有4Go内存,所以我需要将我的演算分块,但我不知道如何分块。我曾想过使用HDFStore
,但由于我只需要构建一个数字数据集,因此我认为没有必要存储完整的DataFrame
,而且我认为HDFStore
不能存储简单的数组。
我能做些什么?我相信一个简单的方法就是这样
import pandas as pd
summary = pd.DataFrame()
chunker = pd.read_csv('test.csv',iterator=True,chunksize=50000)
for chunk in chunker:
group = chunk.groupby('String_key_val')
out = group[['Float_other_val1','Int_other_val2']].sum()
summary = summary.append(out)
summary = summary.reset_index()
group = summary.groupby('String_key_val')
summary = group[['Float_other_val1','Int_other_val2']].sum()