是否有内置的方法通过IQR对列进行过滤(即Q1-1.5IQR和Q3 + 1.5IQR之间的值)?另外,建议大熊猫中任何其他可能的广义过滤都将受到重视.
我有很多列的数据框(大约 100 个特征),我想应用四分位法并想从数据框中删除异常值。
我正在使用此链接 stackOverflow
但问题是上述方法的 nan 工作正常,
当我像这样尝试时
Q1 = stepframe.quantile(0.25)
Q3 = stepframe.quantile(0.75)
IQR = Q3 - Q1
((stepframe < (Q1 - 1.5 * IQR)) | (stepframe > (Q3 + 1.5 * IQR))).sum()
Run Code Online (Sandbox Code Playgroud)
它给了我这个
((stepframe < (Q1 - 1.5 * IQR)) | (stepframe > (Q3 + 1.5 * IQR))).sum()
Out[35]:
Day 0
Col1 0
Col2 0
col3 0
Col4 0
Step_Count 1179
dtype: int64
Run Code Online (Sandbox Code Playgroud)
我只是想知道,接下来我要做什么,以便删除数据框中的所有异常值。
如果我使用这个
def remove_outlier(df_in, col_name):
q1 = df_in[col_name].quantile(0.25)
q3 = df_in[col_name].quantile(0.75)
iqr = q3-q1 …
Run Code Online (Sandbox Code Playgroud) 理论上,vioplot包的小提琴图是盒图+密度函数.
在"boxplot部分"中,
黑匣子对应于IQR(实际上,见下文),和
中线应该对应相同的范围(相邻值,默认值为1.5 IQR),但不是(见下文).任何人都可以解释为什么他们不同?
require("vioplot")
a = rnorm(100)
range (a)
a = c(a,2,8,2.9,3,4, -3, -5) # add some outliers
par ( mfrow = c(1,2))
boxplot(a, range=1.5)
vioplot(a, range=1.5 )
Run Code Online (Sandbox Code Playgroud)上面提到:
Hintze,JL和RD Nelson(1998).小提琴图:箱形图 - 密度跟踪协同作用.美国统计学家,52(2):181-4.
我目前正在尝试根据选定变量的子集排除异常值,目的是执行敏感性分析。我已经调整了此处可用的函数:计算 R 中的异常值),但到目前为止尚未成功(我仍然是 R 新手用户)。如果您有任何建议,请告诉我!
df <- data.frame(ID = c(1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011),
measure1 = rnorm(11, mean = 8, sd = 4),
measure2 = rnorm(11, mean = 40, sd = 5),
measure3 = rnorm(11, mean = 20, sd = 2),
measure4 = rnorm(11, mean = 9, sd = 3))
vars_of_interest <- c("measure1", "measure3", "measure4")
# define a function to remove outliers
FindOutliers <- function(data) {
lowerq = quantile(data)[2]
upperq = quantile(data)[4] …
Run Code Online (Sandbox Code Playgroud) iqr ×4
pandas ×2
r ×2
boxplot ×1
dataframe ×1
outliers ×1
python ×1
python-3.x ×1
violin-plot ×1