2016-12-07 1 views
0

Ich habe eine Pandas Zeitreihe ts = pd.TimeSeries(np.random.normal(0, 1, 100)) und ich möchte nur die Proben in den ersten q-1 Quantilen auswählen.Pandas wählen Daten in q Quantil

Ich kann Quantils Intervall mit bekommen: pd.qcut(ts, 10) aber wie kann ich nur die Proben in den ersten 9 Quantilen auswählen?

Antwort

1

Verwenden Sie die labels=False Option in der qcut() Funktion.

ts = pd.DataFrame(pd.TimeSeries(np.random.normal(0, 1, 100))) 
ts[1] = pd.qcut(ts[0], 10, labels=False) 
ts.loc[ts[1] < 9] 
0

Sie könnten Ihre quantiles mit ganzen Zahlen, kommen sie zu dem Datenrahmen beschriften und einen Booleschen Ausdruck schreiben wählen:

quantiles = pd.qcut(ts, 10, labels=range(10)) 
quantiles.name = 'quantiles' 
df = pd.DataFrame(ts).join(quantiles) 
df[df['quantiles'] < 9] 
0

pd.TimeSeries ist veraltet. Verwenden Sie einfach pd.Series

ts = pd.Series(np.random.normal(0, 1, 100)) 
ts[pd.qcut(ts, 10, labels=False) < 9] 
Verwandte Themen