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'])