使用 groupby 进行元素标准化并使用 dask 进行转换

问题描述

如何使用 dask 进行分组标准化? IE。标准化组内列的元素并将其添加回数据框?

熊猫是单线的:

df = pd.DataFrame({
    'key1': ['a','b','c','d'] * 3,'key2': ['AA','BB','AA','BB']*3,'value': np.random.rand(12)*12
})
    key1    key2    value
0   a   AA  10.073799
1   b   BB  3.274879
2   c   AA  4.310035
3   d   BB  11.007306
4   a   AA  6.696945
5   b   BB  2.303016
6   c   AA  4.961396
7   d   BB  9.440560
8   a   AA  5.573023
9   b   BB  0.164067
10  c   AA  5.843654
11  d   BB  0.175381

那就:

df['value_Z'] = df.groupby(['key1','key2'])['value'].transform(lambda x: (x-x.mean())/x.std())

获得:

    key1    key2    value   value_Z
0   a   AA  0.232276    -0.927093
1   b   BB  9.898198    0.908170
2   c   AA  9.842289    1.144938
3   d   BB  9.432298    0.878705
4   a   AA  10.789874   1.059679
5   b   BB  6.625378    0.163508
6   c   AA  4.782328    -0.702230
7   d   BB  1.712153    -1.088127
8   a   AA  4.454244    -0.132586
9   b   BB  1.196680    -1.071678
10  c   AA  5.493238    -0.442708
11  d   BB  6.805249    0.209422

dask 中做这些事情最有效的方法是什么?我找不到任何关于数据帧相当常见操作的明确说明。我知道由于分区/索引,这不是微不足道的,但最好有更多关于此的文档。

注意:groupby 位于不止一列(尽管一列可以是索引)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)