Pandas select q 分位数中的数据

Pandas select data in q quantile

我有一个 pandas 时间序列 ts = pd.TimeSeries(np.random.normal(0, 1, 100)),我只想 select 前 q-1 个分位数中的样本。

我可以通过以下方式获得分位数间隔:pd.qcut(ts, 10) 但是我如何才能 select 仅前 9 个分位数中的样本?

您可以用整数标记您的分位数,将其连接到数据框并将布尔表达式写入 select:

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

qcut()函数中使用labels=False选项。

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]

pd.TimeSeries 已弃用。只需使用 pd.Series

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