如何在 dask 中实现相对频率函数?

How do I implement a relative frequency function in dask?

我正在尝试使用 dask 获取类别的计数和相对百分比,在下面的数据集中按标签分组,因此:

label    category      
a        1
a        2
a        3
b        1
b        1
b        2

会变成:

label    category    count     percent
a        1           1         33.33333%  
a        2           1         33.33333%
a        3           1         33.33333%
b        1           2         66.66666%
b        2           1         33.33333%

现在我正在做的是 4 个部分。

  1. 将 df 按 ['label', 'category'] 分组并得到 df1
  2. 的计数
  3. 按标签对生成的 df1 进行分组,然后对计数求和
  4. 将#1 与#2 合并以获得计数和总数
  5. 最后使用count和total计算百分比

我是 dask 的新手,pandas 但我的方法似乎效率低下,所以想知道是否有更快的方法来进行此计算。

这就是我能做的..还需要两个步骤...

df1=df.groupby(['label','category']).category.count().to_frame(name='count')
df1['percent']=df1.div(df1.groupby(level=0).sum(),level='label')*100

df1
Out[110]: 
                count    percent
label category                  
a     1             1  33.333333
      2             1  33.333333
      3             1  33.333333
b     1             2  66.666667
      2             1  33.333333