Ich habe einen Datenrahmen (ich werde es PeerGroup nennen), die etwa 20 Spalten hat, jede mit einer Reihe von monatlichen Renditen für 20 verschiedene Fonds, aus einem Jahrzehnt zurück. Ich versuche herauszufinden, ob sich die durchschnittliche Rendite in den letzten drei Jahren statistisch von der Durchschnittsleistung für den gesamten Track Record unterscheidet.Anwenden von T-Test auf jede Spalte in Dataframe
Derzeit mit Pandas, kann ich die Spalten einer nach dem anderen testen, wie so:
import pandas as pd
import statsmodels as st
PeerGroup = pd.read_excel['File\Path.xlsx']
df['Fund1'] = st.ttest_ind(PeerGroup['Column1'], PeerGroup['Column1'].tail(36), equal_var='False')
jedoch, wenn überhaupt möglich, ich möchte den Test auf jeder Spalte in der Datenrahmen laufen in ein Schuss. Mein bester Gedanke war, so etwas zu machen, aber es wird zu einem IndexError. Irgendwelche Gedanken?
df['All_Funds'] = PeerGroup[PeerGroup.columns[1:]].apply(lambda x: st.ttest_ind(PeerGroup[x], PeerGroup[x].tail(36), equal_var='False'))
auch zur besseren Lesbarkeit, könnte ich 'X' für 'fund' als Variable der Wahl empfehlen, tauschen? –