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]
我有一个 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]