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

如何在Pandas中按周和课程计算出勤为1的占比?

解决按周&课程分组计算出勤占比的问题

你需要对数据按周和课程分组,统计每组中出勤值为1的记录占该组总记录的比例,并且输出类似透视表的样式。下面用Pandas来实现这个需求:

步骤1:加载数据(假设你已经有DataFrame)

首先确保你已经导入Pandas并加载了数据,比如:

import pandas as pd

# 替换成你的数据加载方式,比如读取CSV/Excel
df = pd.read_csv("your_data_file.csv")

步骤2:计算分组占比(两种输出形式)

形式1:长表格式(分组后按行展示)

如果需要按周、课程分行展示占比,可以用groupby结合mean()(因为出勤值是1/0,均值就是1的占比):

# 按周和课程分组,计算出勤为1的占比
grouped_result = df.groupby(["week", "course"])["attendance"].mean().reset_index()

# 重命名列名更直观
grouped_result = grouped_result.rename(columns={"attendance": "attendance_rate"})

# 可选:将占比转为百分比格式(保留两位小数)
grouped_result["attendance_rate"] = grouped_result["attendance_rate"].apply(lambda x: f"{x:.2%}")

print(grouped_result)

形式2:透视表格式(和你期望的输出样式一致)

如果想要行是周、列是课程的透视表样式,用pivot_table更直接:

# 创建透视表,计算每组的出勤占比
pivot_result = df.pivot_table(
    index="week",  # 行:周
    columns="course",  # 列:课程
    values="attendance",  # 计算的字段:出勤
    aggfunc="mean"  # 聚合函数:均值即占比
)

# 可选:转为百分比格式
pivot_result = pivot_result.applymap(lambda x: f"{x:.2%}")

print(pivot_result)

注意事项

  • 请根据你实际的列名替换代码中的week、course、attendance,确保和你的DataFrame列名一致。
  • 如果你的出勤值不是1/0,而是其他标记(比如"出勤"/"缺勤"),可以先做映射:df["attendance"] = df["attendance"].map({"出勤":1, "缺勤":0})再执行上述代码。

内容的提问来源于stack exchange,提问作者Dipam Soni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:45:29