在 pandas 数据框中计算 return 的最佳方法是什么?
what is the best way to calculate the return in a pandas dataframe?
我有一个 DataFrame 如下
我想得到股票的标准差returnsst.dev (T1/T0-1,T2/T1-1..etc)
例如,st.dev((9.5/36.5)-1,(6.125/9.5)-1...etc)
结果将添加到 2 号 DataFrame。
你能建议最好的方法吗?显然,我需要对每只股票都这样做。你能帮忙吗?
提前致谢!
P.S:标准差部分可以忽略,如果你能帮我解决returns,剩下的我来做。
这就是全部,我相信:
df.std(axis = 0, skipna = True)
试试这个:
a=[(df.iloc[i+1]/df.iloc[i])-1 for i in range(df.shape[0]-1)]
df1=pd.DataFrame(pd.DataFrame(a).std(),columns=["Return"])
您可以使用 df.pct_change 获得 T1/T0-1
个值。从那里您可以使用 .agg
来聚合多个函数。
# sample df
# please always provide a sample that can be easily pasted and tested
# you could get it with `df.head(10).to_dict('split')`
df = pd.DataFrame({
'AAPL': [36.5, 9.5, 6.125, 40.25, 43.875, 40, 42.25],
'TSL': [44, 43.625, 47.875, 64.25, 17.375, 14.124, 44.75],
'GDXJ': [43.875, 13.625, 22.5, 37.125, 5.5, 21.125, 21.25],
'DAL': [11.625, 33.25, 4.625, 36, 36.25, 14.875, 31.75]
})
df2 = df.pct_change().agg(['mean', 'std']).T
输出
mean std
AAPL 0.755739 2.379347
TSL 0.280437 0.992349
GDXJ 0.434482 1.340593
DAL 1.389140 2.838230
我有一个 DataFrame 如下
我想得到股票的标准差returnsst.dev (T1/T0-1,T2/T1-1..etc)
例如,st.dev((9.5/36.5)-1,(6.125/9.5)-1...etc)
结果将添加到 2 号 DataFrame。
你能建议最好的方法吗?显然,我需要对每只股票都这样做。你能帮忙吗?
提前致谢!
P.S:标准差部分可以忽略,如果你能帮我解决returns,剩下的我来做。
这就是全部,我相信:
df.std(axis = 0, skipna = True)
试试这个:
a=[(df.iloc[i+1]/df.iloc[i])-1 for i in range(df.shape[0]-1)]
df1=pd.DataFrame(pd.DataFrame(a).std(),columns=["Return"])
您可以使用 df.pct_change 获得 T1/T0-1
个值。从那里您可以使用 .agg
来聚合多个函数。
# sample df
# please always provide a sample that can be easily pasted and tested
# you could get it with `df.head(10).to_dict('split')`
df = pd.DataFrame({
'AAPL': [36.5, 9.5, 6.125, 40.25, 43.875, 40, 42.25],
'TSL': [44, 43.625, 47.875, 64.25, 17.375, 14.124, 44.75],
'GDXJ': [43.875, 13.625, 22.5, 37.125, 5.5, 21.125, 21.25],
'DAL': [11.625, 33.25, 4.625, 36, 36.25, 14.875, 31.75]
})
df2 = df.pct_change().agg(['mean', 'std']).T
输出
mean std
AAPL 0.755739 2.379347
TSL 0.280437 0.992349
GDXJ 0.434482 1.340593
DAL 1.389140 2.838230