【问题标题】:extract basic count per values using the chunksize parameter in pandas使用 pandas 中的 chunksize 参数提取每个值的基本计数
【发布时间】:2014-08-21 14:14:31
【问题描述】:

我有一个包含以下类别的 CSV 文件:item1,item2,item3,item4 其值恰好是以下之一:0,1,2,@ 987654328@,4。 我想为每个项目计算每个值有多少。 我的代码如下,df是对应的DataFrame:

outputDf = pandas.DataFrame()
cat_list = list(df.columns.values)
for col in cat_list:
        s = df.groupby(col).size()
        outputDf[col] = s

当我用read_csv 读取我的CSV 时,我想使用chunksize 参数做同样的事情,因为我的CSV 非常大。 我的问题是:我找不到找到cat_list 的方法,也找不到构建outputDf 的方法。

谁能给我一个提示?

【问题讨论】:

    标签: python pandas count


    【解决方案1】:

    我会按列应用value_counts 而不是groupby

    >>> df = pd.read_csv("basic.csv", usecols=["item1", "item2", "item3", "item4"])
    >>> df.apply(pd.value_counts)
       item1  item2  item3  item4
    0     17     26     17     20
    1     21     21     22     19
    2     17     18     22     23
    3     24     14     20     24
    4     21     21     19     14
    

    对于分块版本,我们只需要组装零件(确保fillna(0),这样如果零件没有3,例如,我们得到0而不是nan。)

    >>> df_iter = pd.read_csv("basic.csv", usecols=["item1", "item2", "item3", "item4"], chunksize=10)
    >>> sum(c.apply(pd.value_counts).fillna(0) for c in df_iter)
       item1  item2  item3  item4
    0     17     26     17     20
    1     21     21     22     19
    2     17     18     22     23
    3     24     14     20     24
    4     21     21     19     14
    

    (当然,在实践中,您可能希望使用尽可能大的chunksize。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      相关资源
      最近更新 更多