过滤python pandas中两个百分位数之间的数据

时间:2019-04-28 12:05:23

标签: python pandas numpy

我有pandas个数据框,我想消除列的极值。 例如:我有一个名为pandas的{​​{1}}数据帧,并且其中有一个名为df的列。我想根据以下条件过滤掉数据帧,根据百分比列中的值消除前10个百分点,最后10个百分点。

我想将其过滤到百分之十到百分之九十。

我想到了以下内容

percentage

这是正确的方法吗?还是可以推荐更快的方法?

2 个答案:

答案 0 :(得分:1)

尝试.quantile

p_10 = df.percentage.quantile(0.1)
p_90 = df.percentage.quantile(0.9)
df[df.percentage.gt(p_10) & df.percentage.lt(p_90)]

答案 1 :(得分:1)

整个数据帧是否应根据df['percentage']的百分位数进行过滤?

import numpy as np
import pandas as pd

df = pd.DataFrame({'percentage': abs(np.random.normal(loc=50, scale=30, size=100)),
                   'var1': np.random.rand(100),
                   'var2': np.random.rand(100),
                   'var3': np.random.rand(100)})

# Find out percentiles
lower = np.percentile(df['percentage'], 10)
upper = np.percentile(df['percentage'], 90)

# Select data between
trimmed = df[df.percentage.between(lower, upper)]