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

Python数据分析中.groupby().mean()函数无法正常使用问题求助

解决分组后调用mean()失败的问题

问题根源

执行groupby('Attrition').mean()失败的核心原因:

  • 替换分类值时,你把值改成了带引号的字符串数字(比如'1'、'0'),这些列的数据类型仍为object,而mean()仅支持数值型(int/float)列计算。
  • 从DF.info()的输出能看到还有8个object类型列,这些列无法参与均值计算,导致操作失败。

修复方案

有两种直接有效的修复方式:

方式1:替换时直接用整数类型

把所有replace里的字符串数值改成整数,示例修改后的替换代码:

# 替换分类值为整数,而非字符串
df = df.replace(to_replace=['Yes','No'], value=[1,0])
df = df.replace(to_replace=['Travel_Rarely','Travel_Frequently','Non-Travel'], value=[2,1,0])
df = df.replace(to_replace=['Married','Single','Divorced'], value=[2,1,0])
df = df.replace(to_replace=['Male','Female'], value=[1,0])
#---
df = df.replace(to_replace=['Human Resources','Research & Development','Sales'], value=[0,1,2])
df = df.replace(to_replace=['Human Resources','Life Sciences','Marketing','Medical','Technical Degree','Other'], value=[0,1,2,3,4,5])
df = df.replace(to_replace=['Healthcare Representative','Human Resources','Laboratory Technician','Manager','Manufacturing Director','Research Director','Research Scientist','Sales Executive','Sales Representative'], value=[0,1,2,3,4,5,6,7,8])

方式2:替换后批量转换object列为数值型

如果已经完成了字符串替换,可以用pd.to_numeric批量转换所有可转换的object列:

# 遍历所有列,将可转换的object列转为int类型
for col in DF.columns:
    if DF[col].dtype == 'object':
        try:
            DF[col] = DF[col].astype(int)
        except ValueError:
            # 无法转换的列保留原类型(如果有的话)
            pass

验证修复

完成上述修改后,再执行以下代码就能正常得到分组均值:

left = DF.groupby('Attrition')
print(left.mean())

内容的提问来源于stack exchange,提问作者joj abd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:39:55