如何在 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 个部分。
- 将 df 按 ['label', 'category'] 分组并得到 df1
的计数
- 按标签对生成的 df1 进行分组,然后对计数求和
- 将#1 与#2 合并以获得计数和总数
- 最后使用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
我正在尝试使用 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 个部分。
- 将 df 按 ['label', 'category'] 分组并得到 df1 的计数
- 按标签对生成的 df1 进行分组,然后对计数求和
- 将#1 与#2 合并以获得计数和总数
- 最后使用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