【问题标题】:Pandas Dataframe grouping and standard deviationPandas Dataframe 分组和标准差
【发布时间】:2016-12-07 18:32:59
【问题描述】:

给定以下格式的 pandas 数据框:

GroupNo | at1 | at2 | at3   | at4 
1       | 0.02|1.12 | 1.88  | 3.2
1       | 6.11|1.13 | 0.88  | 5.2
4       | 2.02|1.16 | 2.88  | 0.2
3       | 0.20|0.12 | 1.48  | 1.25
2       | 0.02|1.12 | 1.88  | 1.4
3       | 3.02|1.12 | 1.98  | 2.2
3       | 0.40|0.18 | 1.48  | 1.25

如何找到每组的平均标准差?

例如,按 groupNo 分组,求该组编号中属性的标准差,求它们标准差的均值

任何帮助都会很棒, H

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我认为你需要GroupBy.stdDataFrame.mean

    print (df.groupby('GroupNo').std())
                  at1       at2       at3       at4
    GroupNo                                        
    1        4.306280  0.007071  0.707107  1.414214
    2             NaN       NaN       NaN       NaN
    3        1.573573  0.560833  0.288675  0.548483
    4             NaN       NaN       NaN       NaN
    
    print (df.groupby('GroupNo').std().mean(axis=1))
    GroupNo
    1    1.608668
    2         NaN
    3    0.742891
    4         NaN
    dtype: float64
    

    或者可能需要:

    print (df.groupby('GroupNo').mean().std(axis=1))
    GroupNo
    1    1.453848
    2    0.788480
    3    0.535371
    4    1.149420
    dtype: float64
    

    【讨论】:

    • 谢谢,这会在std()计算中包含组号吗?
    • 没有,你可以通过print (df.groupby('GroupNo')['at1','at2','at3','at4'].std())测试一下
    • groupby('GroupNo').std().mean(axis=1) 和 df.groupby('GroupNo').mean().std(axis=1) 有什么区别? groupby.std.mean 表示平均值的标准差,groupby.mean.st 表示值的平均标准差?
    猜你喜欢
    • 2020-10-14
    • 2021-09-06
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2015-10-24
    • 2014-02-27
    相关资源
    最近更新 更多