案例:利用pandas按区间统计各分数段成绩人数并可视化

需求

现有一批成绩,要求统计各分数段人数并可视化。

要点

pandas.cut可以把一组数据分割成离散的区间,并用为数据打上标签。然后配合pandas.value_counts函数按值计数。
注意!仅能应用于Series类型。

实现1

代码:

import pandas as pd
import matplotlib.pyplot as plt

# 分数
score = [22,51,60,80,70,96,89,95,68,88,85,79,100]
# 设置分段
bins=[0,60,70,80,90,101]
# 按分段离散化数据
segments=pd.cut(score,bins,right=False)
print(segments)
# 统计各分段人数
counts=pd.value_counts(segments,sort=False)
# 绘制柱状图
b=plt.bar(counts.index.astype(str),counts)
# 添加数据标签
plt.bar_label(b,counts)
plt.show()

输出:

[[0, 60), [0, 60), [60, 70), [80, 90), [70, 80), ..., [60, 70), [80, 90), [80, 90), [70, 80), [90, 101)]
Length: 13
Categories (5, interval[int64]): [[0, 60) < [60, 70) < [70, 80) < [80, 90) < [90, 101)]

在这里插入图片描述

实现2

代码:

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.family']='simhei'
# 分数
score = [22,51,60,80,70,96,89,95,68,88,85,79,100]
# 设置分段
bins=[0,60,70,80,90,101]
# 设置标签
labels=['不及格','及格','中等','良好','优秀']
# 按分段离散化数据
segments=pd.cut(score,bins,labels=labels)
print(segments)
# 统计各分段人数
counts=pd.value_counts(segments,sort=False)
# 绘制柱状图
b=plt.bar(counts.index,counts)
# 添加数据标签
plt.bar_label(b,counts)
plt.show()

输出为:

['不及格', '不及格', '不及格', '中等', '及格', ..., '及格', '良好', '良好', '中等', '优秀']
Length: 13
Categories (5, object): ['不及格' < '及格' < '中等' < '良好' < '优秀']

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值