Pandas处理学生数据:表格冗余及类型转换错误修复后异常求助
解决方案
问题1:Total Students列出现冗余数据
你的student_count = school_data_complete_df.count()返回的是Series对象(每列的非空值计数),并非单个总学生数。将这个Series放入district_summary_df时,会把所有列的计数填充进去,导致冗余。
解决方法:
- 如果学生有唯一标识列(比如
student_id),用nunique()获取唯一学生总数(避免重复计数):# 获取唯一学生总数 student_count = school_data_complete_df["student_id"].nunique() - 若确认所有列非空值数一致,也可以取Series的第一个值:
student_count = school_data_complete_df.count().iloc[0]
处理后student_count为单个数值,放入汇总表后只会显示一个总学生数。
问题2:类型错误与百分比列异常
原代码报错是因为student_count是Series,float(student_count)无法将整个Series转为单个float值。即便改用astype("float"),本质还是在操作Series,导致计算出的百分比也是Series,放入汇总表后显示异常。
解决方法:
先按问题1的方式将student_count转为单个数值,再计算百分比:
# 先获取单个学生总数 student_count = school_data_complete_df["student_id"].nunique() # 计算数学及格率 passing_math_percentage = (passing_math_count / student_count) * 100 # 计算阅读及格率 passing_reading_percentage = (passing_reading_count / student_count) * 100
此时计算出的百分比为单个数值,放入district_summary_df后会显示正常的百分比值。
内容的提问来源于stack exchange,提问作者Natnael Berhanu
相关产品推荐
相关产品推荐

