【问题标题】:Compute standard deviation for each row and by group based on a specific variable根据特定变量按组计算每行的标准差
【发布时间】:2020-06-14 21:33:05
【问题描述】:

我是 python 的新用户,我的问题是计算列 residual 的标准差。 这样做:

  1. 我必须计算每组的平均残差
  2. 我需要每个组的 ID 大小

我碰巧做了一些计算,这是我的代码:

import pandas as pd 
import statsmodels.api as sm
import statsmodels.formula.api as sm
from statistics import stdev
import statistics
from math import * 

#Enumerate the data 1,2,3.. for each variable 
A['Rec'] = A.groupby(['code ']).cumcount().add(1)

## Defining companies by their IDs
A['ID']=A.groupby('code ').ngroup().add(1)

### FINDING RESIDUALS 
results = sm.ols(formula='Y ~ X', data=A).fit()
Y_pred = results.predict(A[["X"]])
Y_pred
A['residual'] = A["Y"].values-Y_pred

###SIZE 
A['size']=A.groupby(['ID']).size()



###SD of residuals
for i in A['ID']:
    A['Std'] = sqrt((A['residual']-A['MEAN'])**2)/(A['size']-1)))

这是我的数据框enter image description here

组现在被称为 ID (1,2,3,4,5);在每个组中都有行。在每一行并按组,我想有一个列残差的 SD。

【问题讨论】:

    标签: python pandas group-by statistics standard-deviation


    【解决方案1】:

    我很抱歉,因为我没有足够的分数来发表评论,必须是一个答案。不管怎样,你能不能试试这样的:

    new_df = df.loc[:, 'residual'].groupby(df['ID']).std()
    
    

    【讨论】:

    • 我试过正常运行你的代码,但是很明显没有完全贴出来,所以尝试起来有点困难
    • 感谢您的反馈,我已经尝试过您的代码,它已按每个组 ID 创建 SD,但是我的问题是找到组内存在的每个数据点的 SD,换句话说我需要计算每个日期时间和按组的残差 SD 的代码。再次感谢您
    猜你喜欢
    • 2023-01-13
    • 2019-09-17
    • 2018-11-21
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2020-11-08
    • 2015-06-17
    相关资源
    最近更新 更多