Python 熊猫:根据其他列值查找列的标准偏差

Python 熊猫:根据其他列值查找列的标准偏差,python,pandas,numpy,Python,Pandas,Numpy,正如您在下面看到的,我的数据框中有不同的“标记器”,我想计算“lret”列的标准偏差,但每个标记器的标准偏差除外。目前,它正在将整个列计算为一行。如何计算数据帧中每个股票代码的标准偏差?任何帮助都将不胜感激。另外,请参阅下面的函数了解代码当前正在执行的操作 数据帧输出 作用 使用熊猫的操作: 从数据帧开始df: standard_deviations = df.groupby('ticker').std() 您需要使用df.groupby为需要分组的任何功能组合获取分组。然后,如果要计算每个组

正如您在下面看到的,我的数据框中有不同的“标记器”,我想计算“lret”列的标准偏差,但每个标记器的标准偏差除外。目前,它正在将整个列计算为一行。如何计算数据帧中每个股票代码的标准偏差?任何帮助都将不胜感激。另外,请参阅下面的函数了解代码当前正在执行的操作

数据帧输出 作用 使用熊猫的操作:

从数据帧开始
df

standard_deviations = df.groupby('ticker').std()

您需要使用
df.groupby
为需要分组的任何功能组合获取分组。然后,如果要计算每个组的聚合,可以使用
.agg
.transform

使用
.agg
将创建一个新的df,其中包含唯一的组(本例中为ticker)和聚合函数的结果

使用
.transform
将计算相同的聚合,但将广播到与
self
形状相同的数据帧/序列(self是分组的数据帧)

请注意,groupby在计算任何聚合之前仅选择该列

输出

        price        date ticker      lret       std
0  104.000000  2016-07-01      A       NaN  0.006707
1  104.878151  2016-07-05      A  0.008408  0.006707
2  104.411909  2016-07-06      A -0.004455  0.006707
3  104.931957  2016-07-07      A  0.004968  0.006707
4  104.421274  2016-07-08      A -0.004879  0.006707
5   85.293078  2017-06-26      B -0.008033  0.011908
6   86.521425  2017-06-27      B  0.014299  0.011908
7   85.596974  2017-06-28      B -0.010742  0.011908
8   86.384999  2017-06-29      B  0.009164  0.011908
9   87.479757  2017-06-30      B  0.012593  0.011908
            mean       std
ticker
A       0.001011  0.006707
B       0.003456  0.011908
使用
.agg
的类似示例如下

# st_dev = prices.groupby('ticker')['lret'].std() # for std deviation
# or
# st_dev = prices.groupby('ticker')['lret'].agg('std') # for std deviation
# or even
st_dev = prices.groupby('ticker')['lret'].agg(['mean', 'std']) # for mean and std deviation
输出

        price        date ticker      lret       std
0  104.000000  2016-07-01      A       NaN  0.006707
1  104.878151  2016-07-05      A  0.008408  0.006707
2  104.411909  2016-07-06      A -0.004455  0.006707
3  104.931957  2016-07-07      A  0.004968  0.006707
4  104.421274  2016-07-08      A -0.004879  0.006707
5   85.293078  2017-06-26      B -0.008033  0.011908
6   86.521425  2017-06-27      B  0.014299  0.011908
7   85.596974  2017-06-28      B -0.010742  0.011908
8   86.384999  2017-06-29      B  0.009164  0.011908
9   87.479757  2017-06-30      B  0.012593  0.011908
            mean       std
ticker
A       0.001011  0.006707
B       0.003456  0.011908
阅读更多的文章


请参阅
std

中有关控制自由度的信息,这是否回答了您的问题?
            mean       std
ticker
A       0.001011  0.006707
B       0.003456  0.011908