【问题标题】:work with chunked data while groupby operations are needed在需要 groupby 操作时处理分块数据
【发布时间】:2015-02-22 10:34:51
【问题描述】:

我有一个包含三列的数据集 df'String_key_val''Float_other_val1''Int_other_val2'。我想对 key_val 进行分组,然后提取与这些组相关的 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 Ram,所以我需要对我的微积分进行分块,但我不知道如何。我想过使用HDFStore,但由于我只需要构建一个数字数据集,我认为存储完整的DataFrame 没有意义,我认为HDFStore 不能存储简单的数组。 我能做什么?

【问题讨论】:

    标签: python pandas pytables hdfstore


    【解决方案1】:

    我相信一个简单的方法会是这样的......

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2016-06-15
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多