读取“成绩表.xlsx”文件,按性别分组统计人数,并求两组总评成绩的平均值,使用matplotlib库绘制柱状图进行对比
时间: 2023-12-16 18:06:10 浏览: 267
以下是实现代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel文件
df = pd.read_excel('成绩表.xlsx')
# 按性别分组
grouped = df.groupby('性别')
# 统计人数和平均总评成绩
count = grouped['姓名'].count()
mean = grouped['总评成绩'].mean()
# 绘制柱状图
plt.bar(['男', '女'], count, color='b', alpha=0.5, label='人数')
plt.bar(['男', '女'], mean, color='r', alpha=0.5, label='平均总评成绩')
plt.legend()
plt.show()
```
这段代码会读取名为“成绩表.xlsx”的文件,并按性别分组统计人数和平均总评成绩,最后使用matplotlib库绘制柱状图进行对比。其中,蓝色柱子表示人数,红色柱子表示平均总评成绩。你可以根据需要修改文件名、分组字段、统计字段等。
相关问题
用Python编写代码,在“智能终端程序开发课程成绩表.xlsx”Excel文件中存在四列,分别是作业成绩,项目成绩,期末成绩和总评成绩的和,并绘制柱状图和饼状图
在Python中,我们可以使用pandas库来读取Excel文件并处理数据,matplotlib库来创建图表。首先,你需要安装这两个库,如果没有安装,可以使用pip install pandas matplotlib命令。
以下是大致步骤:
```python
# 导入所需的库
import pandas as pd
import matplotlib.pyplot as plt
# 1. 读取Excel文件
df = pd.read_excel('智能终端程序开发课程成绩表.xlsx')
# 确保所有分数都是数值型
df = df.apply(pd.to_numeric, errors='coerce')
# 检查是否有缺失值
if df.isna().sum().any():
print("存在缺失值,需要先处理或忽略它们")
# 计算总评成绩
df['总评成绩'] = df['作业成绩'] + df['项目成绩'] + df['期末成绩']
# 2. 创建柱状图
plt.figure(figsize=(10,6))
plt.bar(df.columns[:-1], df.iloc[:, :-1].mean()) # 平均分作为每个项目的代表值
plt.title('各部分成绩平均值')
plt.xlabel('科目')
plt.ylabel('平均分')
plt.show()
# 3. 创建饼状图
plt.figure(figsize=(8,8))
total_score = df['总评成绩'].sum()
labels = df.columns[:-1]
sizes = df.iloc[:, :-1].sum() / total_score * 100
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.title('成绩分布')
plt.legend(title='成绩类别', loc='upper right')
plt.axis('equal') # 保持饼状图圆形
plt.show()
```
导入不同专业期末成绩xlsx表,表格和代码在一个目录下,用matplotlib库完成期末成绩可视化,不同专业分布(饼图),期末成绩分布(线图),不同年级人数统计(饼图),不同分数值(10,10-20,20-30......)人数统计(柱状图),代码只需要最基础功能即可
好的,我来为您编写一个Python代码,使用matplotlib库完成期末成绩的可视化。这个代码将包含您要求的基本功能:不同专业分布图、期末成绩分布图、不同年级人数统计图和不同分数值人数统计图。
首先,确保您的Excel文件名为"期末成绩.xlsx",并且包含以下列:专业、年级、分数。
以下是Python代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel文件
df = pd.read_excel('期末成绩.xlsx')
# 1. 不同专业分布(饼图)
plt.figure(figsize=(10, 8))
plt.subplot(2, 2, 1)
df['专业'].value_counts().plot.pie(autopct='%1.1f%%', startangle=90)
plt.title('不同专业分布')
# 2. 期末成绩分布(线图)
plt.subplot(2, 2, 2)
plt.hist(df['分数'], bins=20, edgecolor='black')
plt.title('期末成绩分布')
plt.xlabel('分数')
plt.ylabel('人数')
# 3. 不同年级人数统计(饼图)
plt.subplot(2, 2, 3)
df['年级'].value_counts().plot.pie(autopct='%1.1f%%', startangle=90)
plt.title('不同年级人数统计')
# 4. 不同分数值人数统计(柱状图)
plt.subplot(2, 2, 4)
bins = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
labels = ['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80', '80-90', '90-100']
df['分数区间'] = pd.cut(df['分数'], bins=bins, labels=labels, right=False)
df['分数区间'].value_counts().sort_index().plot.bar()
plt.title('不同分数值人数统计')
plt.xlabel('分数区间')
plt.ylabel('人数')
plt.tight_layout()
plt.show()
```
这段代码首先使用pandas库读取Excel文件,然后使用matplotlib库创建了一个2x2的子图,分别展示了:
1. 不同专业分布的饼图
2. 期末成绩分布的线图(直方图)
3. 不同年级人数统计的饼图
4. 不同分数值人数统计的柱状图
代码中包含了基本的图表美化,如设置图表大小、标题、标签等。
您可以根据实际需要调整代码,例如更改Excel文件名、修改图表样式或添加更多的数据分析。
阅读全文
相关推荐
















