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

如何使用Pandas处理CSV出勤字符串数据并绘制百分比柱状图?

解决Pandas绘制出勤百分比柱状图的字符串数据问题

你的CSV数据用A(缺勤)、P(出勤)记录考勤,直接用原字符串列绘图会因非数值数据报错,解决思路是先将字符串转为可计算的数值,再统计出勤百分比,最后完成绘图:

步骤1:读取数据并转换字符串为数值

用replace方法把P替换为1、A替换为0,将考勤列转为数值类型:

import pandas as pd
import matplotlib.pyplot as plt

# 读取CSV文件
df = pd.read_csv('attendance.csv')

# 定义考勤列列表
attendance_cols = ['1', '2', '3', '4', '5']
# 替换字符串为数值:P=1(出勤),A=0(缺勤)
df[attendance_cols] = df[attendance_cols].replace({'P': 1, 'A': 0})

步骤2:计算每个学生的出勤百分比

统计每行的出勤次数(求和),除以总天数后乘以100得到百分比:

# 计算出勤百分比:出勤次数/总天数 * 100
df['attendance_percent'] = (df[attendance_cols].sum(axis=1) / len(attendance_cols)) * 100

步骤3:绘制柱状图

基于计算出的百分比列绘图,设置坐标轴标签与布局:

# 绘制柱状图
ax = df.plot(x='NAME', y='attendance_percent', kind='bar', color='maroon', figsize=(10, 6))
ax.set_ylabel('出勤百分比 (%)')
ax.set_title('学生出勤百分比统计')
plt.xticks(rotation=45)  # 旋转X轴标签避免重叠
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

完整可运行代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('attendance.csv')

# 转换考勤字符串为数值
attendance_cols = ['1', '2', '3', '4', '5']
df[attendance_cols] = df[attendance_cols].replace({'P': 1, 'A': 0})

# 计算出勤百分比
df['attendance_percent'] = (df[attendance_cols].sum(axis=1) / len(attendance_cols)) * 100

# 生成柱状图
ax = df.plot(x='NAME', y='attendance_percent', kind='bar', color='maroon', figsize=(10, 6))
ax.set_ylabel('出勤百分比 (%)')
ax.set_title('学生出勤百分比统计')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

运行后会得到清晰的柱状图,比如Varane的出勤百分比为80%(4次出勤/5天),其余学生为0%。

内容的提问来源于stack exchange,提问作者Syafiq Syahmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:07:36