首页 > 解决方案 > 分类变量 pandas

问题描述

我想以虚拟变量为条件比较我的数据集的平均值、标准差等统计数据。我在某处看到了一个命令,但我不记得了(或者谷歌搜索不成功)。我想产生这样的输出:

dummy    mean(var1)  mean(var2)
0          1.5        3
1          10         10

也许与groupby有关?

这是一个最小的例子:

    dict1 = [{'dummy': '0', 'var1': 1, 'var2': 2},
         {'dummy': '0', 'var1': 2, 'var2': 4},
        {'dummy': '1', 'var1': 5, 'var2': 8},
        {'dummy': '1', 'var1': 15, 'var2': 12},]
 df = pd.DataFrame(dict1, index=['s1', 's2','s3','s4'])

标签: pythonpandaspandas-groupby

解决方案


我相信你想要groupby+describe

ndf = df.groupby('dummy').describe()

然后只需选择您想要的任何信息

ndf.loc[:, ndf.columns.get_level_values(1)=='mean']

       var1     var2
       mean     mean
dummy       
0      1.5      3.0
1      10.0     10.0

describe可能会更强大,因为会预先为您提供许多不同的统计数据。但当然你可以选择你的方法,例如

df.groupby('dummy').mean()


       var1    var2
dummy       
0      1.5      3.0
1      10.0    10.0


df.groupby('dummy').std()


       var1      var2
dummy       
0      0.707107  1.414214
1      7.071068  2.828427

推荐阅读