使用pandas中的chunksize参数提取每个值的基本计数

时间:2014-08-21 14:14:32

标签: python pandas count

我有一个包含以下类别的CSV文件:item1item2item3item4这些值恰好是以下类别之一:0 1234。 我想为每个项目计算每个值有多少。 我的代码如下,df是相应的DataFrame:

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

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

有人能给我一个暗示吗?

1 个答案:

答案 0 :(得分:3)

我按行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而不是{{1 }}。)

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