You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Anaconda后IQR计算代码出现FutureWarning的解决咨询

IQR计算代码升级Anaconda后的警告修复

问题背景

用于机器学习回归分析的DataFrame IQR计算代码,在升级Anaconda后出现FutureWarning,提示直接对单元素Series调用int()已被弃用,未来会触发TypeError。

原代码

#Checking different percentiles
pd.DataFrame(MyData['Age']).describe(percentiles=(1,0.99,0.9,0.75,0.5,0.3,0.1,0.01))

#Checking Outlier by definition and treating outliers
#Getting median age
Age_col_df = pd.DataFrame(MyData['Age'])
Age_median = Age_col_df.median()

#Getting IQR of Age column   
Q3 = Age_col_df.quantile(q=0.75)
Q1 = Age_col_df.quantile(q=0.25)
IQR = Q3-Q1

#Deriving boundaries of Outliers
IQR_LL = int(Q1 - 1.5*IQR)
IQR_UL = int(Q3 + 1.5*IQR)

#Finding and treating outliers - both lower and upper end
MyData.loc[MyData['Age']>IQR_UL , 'Age'] = int(Age_col_df.quantile(q=0.90))
MyData.loc[MyData['Age']<IQR_LL , 'Age'] = int(Age_col_df.quantile(q=0.01))

警告信息(中文翻译)

C:\Users\danie\AppData\Local\Temp\ipykernel_19008\1214848077.py:13: FutureWarning: 直接对单元素Series调用int()已被弃用,未来会触发TypeError。请改用int(ser.iloc[0])
C:\Users\danie\AppData\Local\Temp\ipykernel_19008\1214848077.py:14: FutureWarning: 直接对单元素Series调用int()已被弃用,未来会触发TypeError。请改用int(ser.iloc[0])
C:\Users\danie\AppData\Local\Temp\ipykernel_19008\1214848077.py:17: FutureWarning: 直接对单元素Series调用int()已被弃用,未来会触发TypeError。请改用int(ser.iloc[0])
C:\Users\danie\AppData\Local\Temp\ipykernel_19008\1214848077.py:18: FutureWarning: 直接对单元素Series调用int()已被弃用,未来会触发TypeError。请改用int(ser.iloc[0])

修复方案

根据警告提示,将所有直接对单元素Series调用int()的位置,改为通过.iloc[0]取出Series中的唯一元素后再转换为int类型。

修改后的代码

#Checking different percentiles
pd.DataFrame(MyData['Age']).describe(percentiles=(1,0.99,0.9,0.75,0.5,0.3,0.1,0.01))

#Checking Outlier by definition and treating outliers
#Getting median age
Age_col_df = pd.DataFrame(MyData['Age'])
Age_median = Age_col_df.median()

#Getting IQR of Age column   
Q3 = Age_col_df.quantile(q=0.75)
Q1 = Age_col_df.quantile(q=0.25)
IQR = Q3-Q1

#Deriving boundaries of Outliers
IQR_LL = int((Q1 - 1.5*IQR).iloc[0])
IQR_UL = int((Q3 + 1.5*IQR).iloc[0])

#Finding and treating outliers - both lower and upper end
MyData.loc[MyData['Age']>IQR_UL , 'Age'] = int(Age_col_df.quantile(q=0.90).iloc[0])
MyData.loc[MyData['Age']<IQR_LL , 'Age'] = int(Age_col_df.quantile(q=0.01).iloc[0])

说明

  • Q1、Q3以及分位数计算结果都是单元素Series,直接调用int()会触发警告,必须先通过.iloc[0]提取具体数值
  • 修改后代码逻辑与原代码完全一致,仅调整了数值提取方式,避免版本兼容问题

内容的提问来源于stack exchange,提问作者2019Block

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:22:09