我是python的新用户,我的问题是计算列residual的标准差。做到这一点:
我碰巧做了一些计算,这是我的代码:
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。
我很抱歉,我没有足够的意见要发表评论,必须提供答案。无论如何,你可以尝试这样的事情:
new_df = df.loc[:, 'residual'].groupby(df['ID']).std()