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

时间:2017-11-10 01:52:45

标签: python pandas dataframe 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进行分组,并将计数设为df1
  2. 按标签对生成的df1进行分组,然后对计数进行求和
  3. 将#1与#2合并以获得计数和总数
  4. 最后使用count和total计算百分比
  5. 对于dask和pandas来说是新手,但我的方法似乎效率低下,所以想知道是否有更快的方法来进行此计算。

1 个答案:

答案 0 :(得分:2)

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

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