Pandas Groupby 加权标准差
Posted
技术标签:
【中文标题】Pandas Groupby 加权标准差【英文标题】:Pandas Groupby Weighted Standard Deviation 【发布时间】:2021-10-01 02:46:00 【问题描述】:我有一个数据框:
Type Weights Value ....
0 W 0.5 15
1 C 1.2 19
2 W 12 25
3 C 7.1 15 .....
.......
.......
我想按类型分组,然后计算加权平均值和加权标准差。
似乎有可用于加权平均 (groupby weighted average and sum in pandas dataframe) 的解决方案,但没有可用于加权标准差的解决方案。
有没有简单的方法。
【问题讨论】:
【参考方案1】:我使用了以下链接中的加权标准差公式: https://doc-archives.microstrategy.com/producthelp/10.7/FunctionsRef/Content/FuncRef/WeightedStDev__weighted_standard_deviation_of_a_sa.htm
但是你可以修改为不同的公式
import numpy as np
def weighted_sd(input_df):
weights = input_df['Weights']
vals = input_df['Value']
numer = np.sum(weights * (vals - vals.mean())**2)
denom = ((vals.count()-1)/vals.count())*np.sum(weights)
return np.sqrt(numer/denom)
print(df.groupby('Type').apply(weighted_sd))
【讨论】:
以上是关于Pandas Groupby 加权标准差的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差