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

如何用Pandas按课程分组统计各字母成绩的人数?

用Python统计各课程字母成绩人数的解决方案

前置准备

确保已安装pandas(未安装则执行命令:pip install pandas),它能高效完成分组统计需求。

完整代码示例

1. 衔接你已有的numpy数据(数据已在DataFrame中可跳过此步)

假设你已经用numpy生成了字母成绩列,先把所有数据转成pandas的DataFrame:

import numpy as np
import pandas as pd

# 替换成你实际的numpy数组
students = np.array(['张三', '李四', '王五', '赵六', '孙七'])
scores = np.array([85, 92, 60, 55, 40])
courses = np.array(['会计学', '大学代数', '会计学', '大学代数', '大学代数'])
# 你已用numpy生成的字母成绩列
letter_grades = np.array(['B', 'A', 'C', 'D', 'F'])

# 转换为DataFrame
df = pd.DataFrame({
    '学生': students,
    '当前分数': scores,
    '课程': courses,
    '字母成绩': letter_grades
})

2. 分组统计各课程的字母成绩人数(包含计数为0的等级)

# 定义需要统计的所有字母等级,确保不会遗漏
grade_levels = ['A', 'B', 'C', 'D', 'F']

# 按课程分组,统计每个等级的人数,缺失等级填充0
grade_stats = df.groupby('课程')['字母成绩'].value_counts().unstack(fill_value=0)[grade_levels]

# 按你需要的格式输出结果
for course, counts in grade_stats.iterrows():
    # 筛选出计数大于0的等级,拼成指定格式
    result_items = [f"{grade}={count}" for grade, count in counts.items() if count > 0]
    result_str = "、".join(result_items)
    print(f"{course} {result_str}")

代码说明

  • groupby('课程')['字母成绩'].value_counts():按课程分组后,统计每组内各字母成绩的出现次数
  • unstack(fill_value=0):将行级统计结果转为列,缺失的字母等级自动填充0,保证A-F每个等级都被统计
  • [grade_levels]:强制指定列的顺序为A、B、C、D、F,避免顺序混乱
  • 最终输出示例:
    会计学 B=1、C=1
    大学代数 A=1、D=1、F=1
    

内容的提问来源于stack exchange,提问作者Hank Hargis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:55:13