我有pandas
个数据框,我想消除列的极值。
例如:我有一个名为pandas
的{{1}}数据帧,并且其中有一个名为df
的列。我想根据以下条件过滤掉数据帧,根据百分比列中的值消除前10个百分点,最后10个百分点。
我想将其过滤到百分之十到百分之九十。
我想到了以下内容
percentage
这是正确的方法吗?还是可以推荐更快的方法?
答案 0 :(得分:1)
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)]