dask数据帧计数值

时间:2017-10-11 05:28:53

标签: python dask

在我的 dask 数据框中,我有Series个列表。因此列触发器如下所示:

['a', 'b']
['c']
['a', 'c']

我希望计算系列中每个独特元素的出现次数,以便我最终得到:

{'a' : 2,
'b' : 1
'c' : 2}

我设法让它发挥作用的唯一方法是:

from collections import Counter

a = df.triggers.loc[:1000000]
b = a.sum()
trigger_counts = Counter(b.compute())

我必须做.loc[:10000]才能将计算时间缩短到合理的时间。我有一种感觉,我可以更快地做到这一点。 .value_counts()不适用于b,因为它属于dask.dataframe.core.Scalar类型,并且没有该属性。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用dask:

  import dask.dataframe as dd
  ddf = dd.read_csv('file.csv')
  ddf.country.value_counts().compute().plot(kind='bar')

哪里"国家"在我的情况下是一个专栏。

你将获得一个不错的情节!

答案 1 :(得分:0)

您可以执行以下操作:

import pandas as pd

triggers_dummies = (pd.get_dummies(df.triggers.apply(pd.Series)
                                              .stack()).sum(level=0))
counts = np.sum(triggers_dummies, axis=0).to_dict()