如何在pandas DataFrame或Series中选择特定百分位数的数据?

Cat*_*ian 0 python pandas

我有一个包含所有数值的 pandas DataFrame 或 Series。我想选择 DataFrame 或 Series 的某一列中前 99% 的值,从而删除后 1% 的最小值。我应该如何在Python 3中实现这一点?谢谢!

jpp*_*jpp 5

您可以使用np.percentile,但要小心。百分位数的定义不止一个,因此首先请确保它适合您的需求。

下面的示例过滤掉系列中最小的 20% 值。

import pandas as pd, numpy as np

s = pd.Series(np.random.rand(10))

# 0    0.477326
# 1    0.474181
# 2    0.438678
# 3    0.397124
# 4    0.777874
# 5    0.698927
# 6    0.244970
# 7    0.540653
# 8    0.658190
# 9    0.774246
# dtype: float64

t = s[s > np.percentile(s, 20)]

# 0    0.477326
# 1    0.474181
# 2    0.438678
# 4    0.777874
# 5    0.698927
# 7    0.540653
# 8    0.658190
# 9    0.774246
# dtype: float64
Run Code Online (Sandbox Code Playgroud)