qq_41104373 2023-08-19 14:15 采纳率: 40%
浏览 13
已结题

pandas 分组问题

这个 pandas 分组 怎么写?
有两个表,一个成绩表,一个满分表 如下图

img

img



需要1. 根据区县进行分组 统计,总人数,均值,满分人数,满分率,零分人数,零分率,不满分(>0分,<满分)人数,不满分率
2.根据区县和 学校进行分组 统计,

结果表要如下:

img

  • 写回答

9条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-19 17:02
    关注
    获得1.50元问题酬金

    【以下回答由 GPT 生成】

    首先,我们需要导入 pandas 并读取成绩表和满分表的数据。假设成绩表的文件名为 "成绩表.csv",满分表的文件名为 "满分表.csv"。

    import pandas as pd
    
    # 读取成绩表和满分表的数据
    成绩表 = pd.read_csv("成绩表.csv")
    满分表 = pd.read_csv("满分表.csv")
    

    接下来,我们可以根据区县进行分组,并进行相应的统计。

    问题1:根据区县进行分组,统计每个区县的总人数、均值、满分人数、满分率、零分人数和零分率,以及不满分的人数和不满分率。

    # 根据区县进行分组
    按区县分组 = 成绩表.groupby("区县")
    
    # 统计总人数
    总人数 = 按区县分组.size()
    
    # 统计均值
    均值 = 按区县分组["成绩"].mean()
    
    # 统计满分人数
    满分人数 = 按区县分组.apply(lambda x: (x["成绩"] == 满分表.loc[满分表["区县"] == x.name, "满分"].values[0]).sum())
    
    # 统计满分率
    满分率 = 满分人数 / 总人数
    
    # 统计零分人数
    零分人数 = 按区县分组.apply(lambda x: (x["成绩"] == 0).sum())
    
    # 统计零分率
    零分率 = 零分人数 / 总人数
    
    # 统计不满分人数
    不满分人数 = 总人数 - 满分人数 - 零分人数
    
    # 统计不满分率
    不满分率 = 不满分人数 / 总人数
    
    # 将结果组合成一个新的 DataFrame
    结果1 = pd.DataFrame({"总人数": 总人数, "均值": 均值, "满分人数": 满分人数, "满分率": 满分率, "零分人数": 零分人数, "零分率": 零分率, "不满分人数": 不满分人数, "不满分率": 不满分率})
    

    问题2:根据区县和学校进行分组,统计每个区县每个学校的总人数、均值、满分人数、满分率、零分人数和零分率,以及不满分的人数和不满分率。

    # 根据区县和学校进行分组
    按区县学校分组 = 成绩表.groupby(["区县", "学校"])
    
    # 统计总人数
    总人数 = 按区县学校分组.size()
    
    # 统计均值
    均值 = 按区县学校分组["成绩"].mean()
    
    # 统计满分人数
    满分人数 = 按区县学校分组.apply(lambda x: (x["成绩"] == 满分表.loc[满分表["区县"] == x.name[0], "满分"].values[0]).sum())
    
    # 统计满分率
    满分率 = 满分人数 / 总人数
    
    # 统计零分人数
    零分人数 = 按区县学校分组.apply(lambda x: (x["成绩"] == 0).sum())
    
    # 统计零分率
    零分率 = 零分人数 / 总人数
    
    # 统计不满分人数
    不满分人数 = 总人数 - 满分人数 - 零分人数
    
    # 统计不满分率
    不满分率 = 不满分人数 / 总人数
    
    # 将结果组合成一个新的 DataFrame
    结果2 = pd.DataFrame({"总人数": 总人数, "均值": 均值, "满分人数": 满分人数, "满分率": 满分率, "零分人数": 零分人数, "零分率": 零分率, "不满分人数": 不满分人数, "不满分率": 不满分率})
    

    最后,我们可以将结果打印出来,或者保存为一个新的文件。

    # 打印结果
    print("问题1的结果:")
    print(结果1)
    print("问题2的结果:")
    print(结果2)
    
    # 保存为一个新的文件
    结果1.to_csv("问题1的结果.csv")
    结果2.to_csv("问题2的结果.csv")
    

    以上就是使用 pandas 对该问题进行分组和统计的完整解决方案。如果有任何问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 系统已结题 8月27日
  • 赞助了问题酬金15元 8月19日
  • 创建了问题 8月19日

悬赏问题

  • ¥15 VESTA绘图原子颜色显示异常
  • ¥15 天翼云搭建多ip l2tp
  • ¥30 matlab求解刃位错方程
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥20 dify工作流分析sql查询结果
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)
  • ¥15 通过AT指令控制esp8266发送信息