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
相关产品推荐
相关产品推荐

