题目需求描述

已知两个Excel表格:学生基本信息表期末考试成绩表分别用于存放学生的基本信息(包括姓名性别班级)和学生的期末成绩(包括姓名语文数学英语总分),部分数据如下图所示(完整数据见学生基本信息表.xls期末考试成绩表.xls),完成以下操作。

(1)编写程序读取两张表中的数据,并将其根据姓名进行合并,然后将合并后的数据按照总分从高到低进行排序,总分相同时,根据英语成绩从高到低排序,并将结果存放在学生期末考试成绩排名表.xls中,最终表中的部分数据如下。

 (2)编写程序分别用饼状图绘制出语文、数学、英语课程优秀分数>=90)、良好90>分数>=80)、中等80>分数>=70)、及格70>分数>=60)、不及格分数<60)的比例。最终效果如图所示,要求三个图放在一个大图中,大图的标题为学生各科成绩分布图,每个图都有子标题,例如语文成绩分布,所有比例保留1位小数点,最终的图保存为饼状图.png

(3)编写程序分别用条形图绘制出语文、数学、英语课程的最低分、最高分以及平均分。最终效果图如图所示,要求图中显示图例标题,条形图上方显示相应数字,最终的图保存为条形.png

代码参考

import pandas as pd
import matplotlib.pyplot as plt
import numpy as npdef get_datas(df, col):level_1 = len(df[df[col] >= 90])level_2 = len(df[(df[col] < 90) & (df[col] >= 80)])level_3 = len(df[(df[col] < 80) & (df[col] >= 70)])level_4 = len(df[(df[col] < 70) & (df[col] >= 60)])level_5 = len(df[df[col] < 60])return level_1, level_2, level_3, level_4, level_5# 第一小题
d_1 = pd.read_excel("学生基本信息表.xls", skiprows=1)
d_2 = pd.read_excel("期末考试成绩表.xls", skiprows=1)
d_3 = pd.merge(d_1, d_2)
d_3 = d_3.sort_values(by=["总分", "英语"], ascending=False)
d_3.to_excel("学生期末考试成绩排名表.xls")# 第二小题
results = []
titles = ["语文", "数学", "英语"]
plt.rcParams["font.family"] = "FangSong"  # 设置字体
labels = ["优秀", "良好", "中等", "及格", "不及格"]
for title in titles:results.append(get_datas(d_3, title))plt.figure(figsize=(12, 5))  # 创建一个新图
plt.suptitle("学生各科成绩分布图")
for index, data in enumerate(results):print(data)plt.subplot(1, 3, index + 1)plt.title(titles[index] + "成绩分布")plt.pie(data, labels=labels, autopct='%.1f%%', shadow=True, labeldistance=1.2,explode=(0.1, 0, 0, 0, 0), colors=['m', 'c', 'y', 'r', 'g'])
plt.savefig("饼状图")# 第三小题
plt.figure()  # 创建一个新图
min_datas =[np.min(d_3["语文"]), np.min(d_3["数学"]), np.min(d_3["英语"])]
mean_datas =[np.mean(d_3["语文"]), np.mean(d_3["数学"]), np.mean(d_3["英语"])]
max_datas =[np.max(d_3["语文"]), np.max(d_3["数学"]), np.max(d_3["英语"])]
kemu_datas = [min_datas, mean_datas, max_datas]
legends = ["最低分", "平均分", "最高分"]
x = range(len(titles))
plt.title("各科成绩统计信息")
for index, data in enumerate(kemu_datas):plt.bar([i + 0.3 * index for i in x], height=data, width=0.3, label=legends[index])for j, num in enumerate(data):plt.text(0.3 * index + j, num + 1, "{:.1f}".format(num), ha="center", va="bottom", color="r")
plt.xticks([i + 0.3 for i in x], titles)  # 绘制底部标签
plt.legend()
plt.savefig("条形图")
plt.show()

相关资源和代码可以关注微信公众号:Python资源分享,回复 0603 即可获取。或者通过CSDN资源下载页下载:https://download.csdn.net/download/Dream_Gao1989/19358882

Python数据分析与可视化案例解析相关推荐

  1. Python数据分析及可视化案例--2018成都市公共租赁住房家庭(个人)配租信息分析

    前言 数据来源于成都市公共数据开放平台. 数据集:http://www.cddata.gov.cn/odweb/catalog/catalogDetail.htm?cata_id=fRa2EWB1Ee ...

  2. python数据分析可视化实例-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  3. python可视化数据分析-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  4. python数据分析与可视化清华大学_Python数据分析与可视化

    讲解Python数据分析与可视化中的九大模块,内容全面详实: 提供11个课程实训和2个完整的项目案例,理论结合实践 : 赠送420分钟的教学视频及丰富的配套资源,便于教师教学. 超值赠送: 教学大纲. ...

  5. [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述

    参考链接: Python | 数据分析的数学运算 数据分析与可视化(一) 1.1 数据分析1.1.1 数据.信息与数据分析1.1.2数据分析与数据挖掘的区别1.1.3数据分析的流程 1.2 数据可视化 ...

  6. 【Python数据分析与可视化】Pandas统计分析-实训

    [Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...

  7. python数据分析与可视化【一】python基础实例

    用python做数据分析与可视化(一) python编程基础 这一块前面我写过博客,奉上链接:python基础 这篇就来看看几个小实例 后面有python很基础的知识点和例子 后面数据分析能用上 下一 ...

  8. 【Python数据分析与可视化】期末复习笔记整理(不挂科)

    [Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...

  9. Python数据分析-数据可视化(二)

    欢迎大家访问个人博客:https://jmxgodlz.xyz 文章目录 前言 Matplotlib 折线图格式调整 标签 线条颜色 线条形状 折点样式 线条透明度 前言 看到有些论文插图十分简洁美观 ...

  10. Python数据分析与可视化学习笔记(一)数据分析与可视化概述

    数据分析与可视化(一) 1.1 数据分析 1.1.1 数据.信息与数据分析 1.1.2数据分析与数据挖掘的区别 1.1.3数据分析的流程 1.2 数据可视化 1.3 数据分析与可视化常用工具 1.4 ...

最新文章

  1. 申请图吧地图Android API密钥详解
  2. oracleI基础入门(1)--背景
  3. python requests 异步调用_带有Python请求的异步请求
  4. 4由通道检测_大唐阜新煤制天然气「榜样力量」实训做实出实效——废水总酚检测时间由4小时缩短至10分钟...
  5. Spring的配置与使用
  6. 生成FaceBook所需的散列哈希值
  7. 【加解密学习笔记:第一天】操作系统基础知识
  8. InterruptedException的学习
  9. Grinmw.py v0.1.1发布,支持Grin Wallet API V3和Grin Node API V2
  10. Eclipse插件安装之,使用(已经下载的zip)安装包直接安装插件(例:glassfish 插件 plugin)
  11. com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field FileSize
  12. python中response对象的属性_关于python:AttributeError:’HTTPResponse’对象没有属性’split’...
  13. python惰性_如何创建惰性属性以提高Python的性能
  14. php怎么把时间精确到毫秒,如何使用php获取当前时间戳、日期并精确到毫秒
  15. ubuntu 14.04 更新 flash
  16. 哲学家谈“情绪”——欲望以上,理性未满
  17. python爬取墨迹天气的8月份的温度情况并发送到邮箱
  18. FPGA Verilog视频笔记
  19. 发布WebGL遇到的问题
  20. 08---HTML+CSS---float浮动

热门文章

  1. 基于CCS工程MSP430串口升级(三)
  2. 移动端input提起数字键盘如何设置小数点?
  3. 定制Android关机界面
  4. 普希金《致凯恩》 与荷尔德林《狄奥提玛》
  5. java计算机毕业设计民航售票管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  6. 彩色图片用opencv批量转成黑底白底
  7. 服务器硬盘红灯常亮_硬盘指示灯一直亮
  8. Kaggle系列-Tweet Sentiment Extraction第一名方案
  9. 【课程作业】情感分析方向SKEP: Sentiment Knowledge Enhanced Pretraining for Sentiment Analysis阅读报告
  10. Next generation sequencing (NGS)二代测序数据预处理与分析