Python自定义函数无返回值 需返回字典格式分类占比结果
问题根因
- 自定义函数没有写
return返回语句,Python函数如果不显式指定返回值,默认返回None,这是封装后拿不到结果的核心原因 - 代码里把
print()的执行结果赋值给变量,print()仅负责在控制台输出内容,本身的返回值固定为None,无法存储计算得到的占比数据 - 原函数直接使用全局变量
df,没有把数据集作为参数传入,代码可复用性差,换数据集就会报错
修正后代码
def education(df): total = sum(df["CHILDNM"]) # 按EDUC1分类统计对应CHILDNM总和 n_lt_highschool = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 1, 0)["CHILDNM"]) n_highschool = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 2, 0)["CHILDNM"]) n_mt_highschool = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 3, 0)["CHILDNM"]) n_college = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 4, 0)["CHILDNM"]) # 按要求构造字典格式返回值 return { "less than high school": n_lt_highschool / total, "high school": n_highschool / total, "more than high school": n_mt_highschool / total, "college": n_college / total }
使用说明
- 调用函数时传入你要处理的DataFrame对象即可,示例:
# 假设你的数据集变量名是df edu_ratio = education(df) # 打印结果验证 print(edu_ratio)
- 执行后
edu_ratio就是你预期的字典格式占比结果,结构和示例{ "less than high school" :0.2 , "high school" :0.39 ...}完全一致。
内容的提问来源于stack exchange,提问作者reem
相关产品推荐
相关产品推荐

