基于 IQR 按组移除异常值
Remove outliers by group based on IQR
我有一个包含以下变量的 df:
- pp(参与者)
- 条件
- rt(反应时间)
(以及一大堆其他东西)。
我想 trim 基于 iqr 标准的异常值。但是,我想按条件、按页执行此操作。
我认为解决方案将从
开始
grouped = df.groupby(['pp','condition'])
然后呢?如何删除每组的异常值?我是使用 apply 函数,还是 filter 函数帮助我解决这个问题?
你可以这样做:
# define a function to filter out your data
def filter_condition(grped_df):
if some_condition:
return grped_df[some_condition]
return grped_df
grouped = df.groupby(by=['pp','condition'])
# use apply to pass each group to your defined function and reset index to remove grouped multi index.
filtered_df = grouped.apply(filter_condition).reset_index(drop=True)
我有一个包含以下变量的 df:
- pp(参与者)
- 条件
- rt(反应时间)
(以及一大堆其他东西)。
我想 trim 基于 iqr 标准的异常值。但是,我想按条件、按页执行此操作。
我认为解决方案将从
开始grouped = df.groupby(['pp','condition'])
然后呢?如何删除每组的异常值?我是使用 apply 函数,还是 filter 函数帮助我解决这个问题?
你可以这样做:
# define a function to filter out your data
def filter_condition(grped_df):
if some_condition:
return grped_df[some_condition]
return grped_df
grouped = df.groupby(by=['pp','condition'])
# use apply to pass each group to your defined function and reset index to remove grouped multi index.
filtered_df = grouped.apply(filter_condition).reset_index(drop=True)