首页 > 解决方案 > 遍历值和列名 - 将它们放在字典中

问题描述

大家好,我需要以下代码的帮助 抱歉,但我想我会改变这个问题 -

下面的代码有效,但我试图做的是让它更有效 -

import yfinance as yf
data = yf.download("SPY AAPL IOO IXJ", start="2015-01-01", end="2019-04-30")
data
df=data['Adj Close']
returns=data['Adj Close'].pct_change().dropna()
roll_profits = rolling_profits(returns, window).fillna(method='ffill')

list_dict=[]

for column in returns:
    grit = grit_index(returns[column], minperiods)
    ulcer=ulcer_index(returns[column], minperiods)

    row = {'name' : column, 
           'score': grit[-1], 
           'ulcer' : ulcer[-1]
          }
    list_dict.append(row)

print(list_dict)
scoreboard = pd.DataFrame.from_dict(list_dict)
print(scoreboard)

笔记-

grit index

# Define a function 'grit_index'
def grit_index(returns, minperiods):
    cum_rets = cumulative_returns(returns, minperiods).fillna(method='ffill')
    peak_rets = cum_rets.cummax()
    dd = np.log((cum_rets/peak_rets)) ** 2
    ulcer = np.sqrt(dd.expanding(min_periods=minperiods).sum())
    grit = cum_rets * ulcer ** -1
    return grit


input:

    AAPL    IOO IXJ SPY
Date                
2015-01-02  -0.009513   -0.002099   0.002712    -0.000535
2015-01-05  -0.028172   -0.022745   -0.005009   -0.018060
2015-01-06  0.000094    -0.008745   -0.004732   -0.009419
2015-01-07  0.014022    0.008551    0.016184    0.012461
2015-01-08  0.038423    0.019513    0.020904    0.017745

l

其中,returns 是以股票收益为列的 pandas 数据框。

我想知道是否有人有任何想法来改进上述代码

非常感谢,

安德鲁

标签: pythonpandasdataframe

解决方案


推荐阅读