Python 如何通过使用pandas施加限制来处理异常值?

Python 如何通过使用pandas施加限制来处理异常值?,python,python-3.x,pandas,dataframe,outliers,Python,Python 3.x,Pandas,Dataframe,Outliers,我有两个数据帧,如下所示 df_data = pd.DataFrame({'temp' :[-138,36,34,38,237,339],'heart_rate':[0,0,28,31,25,238]}) df_limit = pd.DataFrame({'reading' :['min_temp','min_heart_rate'],'min_val':[30,24],'max_val':[39,32]}) 我已经尝试过使用sd和IQR处理异常值,但它们似乎受到数据分布的影响,仍然会在数

我有两个数据帧,如下所示

df_data = pd.DataFrame({'temp' :[-138,36,34,38,237,339],'heart_rate':[0,0,28,31,25,238]})

df_limit = pd.DataFrame({'reading' :['min_temp','min_heart_rate'],'min_val':[30,24],'max_val':[39,32]})

我已经尝试过使用sd和IQR处理异常值,但它们似乎受到数据分布的影响,仍然会在数据中给我异常值

Q1 = dfx.quantile(0.25)
Q3 = dfx.quantile(0.75)
IQR = Q3 - Q1
print(IQR)
所以,我想做的是对数据施加最小和最大条件

也就是说,如果您查看df_limit数据帧,您将获得特定参数(如min_temp或min_heart rate)的最小和最大限制

任何违反这些条件的值,如果违反最小标准,则必须替换为默认最小值;如果违反最大标准,则必须替换为最大值,如下所示。请注意,我的真实数据有超过百万行和70列。任何可伸缩的方法都是有帮助的。但是,是的,我对数据框架中的所有这些列都有限制,比如df_limit

我希望我的输出如下所示。您可以看到,冲突的值被默认的最小值和最大值替换

用于从df_限制中提取最小值和最大值:

如果可能,创建通用解决方案:

df_limit = df_limit.set_index('reading')

for c in df_data.columns:
    df_data[c] = df_data[c].clip(df_limit.loc[f'min_{c}','min_val'],
                                 df_limit.loc[f'min_{c}','max_val'])
试试这个:

def通过封顶DF1、df2列删除异常值: 上限=df2.loc[列,'max\u val'] lower_lim=df2.loc[列,'min_val'] df1.loc[df[列]>上限,列]=上限 df1.loc[df[列]<下限,列]=下限 通过数据封顶、数据限制、“最低温度”删除异常值
尚未测试,但应在更换后工作accordingly@anky_91-哟,剪辑功能很好。
df_limit = df_limit.set_index('reading')

for c in df_data.columns:
    df_data[c] = df_data[c].clip(df_limit.loc[f'min_{c}','min_val'],
                                 df_limit.loc[f'min_{c}','max_val'])