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