Ich habe eine Funktion monatliche Renditen zu berechnen:Berechnung jährliche Standardabweichung, Monatsrenditen in Pandas gegeben
def monthlyreturns(df):
first = df.resample('M').first().to_period('M')
last = df.resample('M').last().to_period('M')
return ((last-first)/first) * 100
und eine daraus resultierende df aus monthlyreturns (Aktien): ist
FOX FOXA MMM
Date
2012-01 5.4 3.2 -.08
2012-02 .07 1.2 -.62
...
2017-08 -.2 -4.2 2.3
Meine Frage - Wie kann ich die Standardabweichung für ein Jahr berechnen? Meine erwartete Leistung wäre, das df im gleichen Format zu halten (mit Aktien in Spalten und Datum als Index), aber die jährliche Standardabweichung bei monatlichen Renditen zu berechnen (es sollten also etwa 7 Werte für jeden Bestand sein)
Bisher habe ich versucht:
sd = pd.DataFrame()
x = -13
y = -1
for date in reversed(periods): #where periods is ea year
sd[date] = np.std(monthly_returns.iloc[x:y])
x -= 12
y -= 12
if x < -72:
break
Dies funktioniert - aber die Daten und Spalten vertauscht, und frage mich, ob es einen saubereren Code war dieses
Wenn Sie eine Schleife auf ein Pandas-Objekt anwenden, tun Sie es in 99% der Fälle falsch. – DyZ
Ich wusste, dass ein 1-Liner so, ich wusste nicht über den Index.Jahr Teil - vielen Dank dafür –