在我的 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
类型,并且没有该属性。
答案 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()