Python数据分析与可视化案例解析
题目需求描述
已知两个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数据分析与可视化案例解析相关推荐
- Python数据分析及可视化案例--2018成都市公共租赁住房家庭(个人)配租信息分析
前言 数据来源于成都市公共数据开放平台. 数据集:http://www.cddata.gov.cn/odweb/catalog/catalogDetail.htm?cata_id=fRa2EWB1Ee ...
- python数据分析可视化实例-Python数据分析与可视化从入门到精通
(1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...
- python可视化数据分析-Python数据分析与可视化从入门到精通
(1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...
- python数据分析与可视化清华大学_Python数据分析与可视化
讲解Python数据分析与可视化中的九大模块,内容全面详实: 提供11个课程实训和2个完整的项目案例,理论结合实践 : 赠送420分钟的教学视频及丰富的配套资源,便于教师教学. 超值赠送: 教学大纲. ...
- [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述
参考链接: Python | 数据分析的数学运算 数据分析与可视化(一) 1.1 数据分析1.1.1 数据.信息与数据分析1.1.2数据分析与数据挖掘的区别1.1.3数据分析的流程 1.2 数据可视化 ...
- 【Python数据分析与可视化】Pandas统计分析-实训
[Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...
- python数据分析与可视化【一】python基础实例
用python做数据分析与可视化(一) python编程基础 这一块前面我写过博客,奉上链接:python基础 这篇就来看看几个小实例 后面有python很基础的知识点和例子 后面数据分析能用上 下一 ...
- 【Python数据分析与可视化】期末复习笔记整理(不挂科)
[Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...
- Python数据分析-数据可视化(二)
欢迎大家访问个人博客:https://jmxgodlz.xyz 文章目录 前言 Matplotlib 折线图格式调整 标签 线条颜色 线条形状 折点样式 线条透明度 前言 看到有些论文插图十分简洁美观 ...
- Python数据分析与可视化学习笔记(一)数据分析与可视化概述
数据分析与可视化(一) 1.1 数据分析 1.1.1 数据.信息与数据分析 1.1.2数据分析与数据挖掘的区别 1.1.3数据分析的流程 1.2 数据可视化 1.3 数据分析与可视化常用工具 1.4 ...
最新文章
- 申请图吧地图Android API密钥详解
- oracleI基础入门(1)--背景
- python requests 异步调用_带有Python请求的异步请求
- 4由通道检测_大唐阜新煤制天然气「榜样力量」实训做实出实效——废水总酚检测时间由4小时缩短至10分钟...
- Spring的配置与使用
- 生成FaceBook所需的散列哈希值
- 【加解密学习笔记:第一天】操作系统基础知识
- InterruptedException的学习
- Grinmw.py v0.1.1发布,支持Grin Wallet API V3和Grin Node API V2
- Eclipse插件安装之,使用(已经下载的zip)安装包直接安装插件(例:glassfish 插件 plugin)
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field FileSize
- python中response对象的属性_关于python:AttributeError:’HTTPResponse’对象没有属性’split’...
- python惰性_如何创建惰性属性以提高Python的性能
- php怎么把时间精确到毫秒,如何使用php获取当前时间戳、日期并精确到毫秒
- ubuntu 14.04 更新 flash
- 哲学家谈“情绪”——欲望以上,理性未满
- python爬取墨迹天气的8月份的温度情况并发送到邮箱
- FPGA Verilog视频笔记
- 发布WebGL遇到的问题
- 08---HTML+CSS---float浮动
热门文章
- 基于CCS工程MSP430串口升级(三)
- 移动端input提起数字键盘如何设置小数点?
- 定制Android关机界面
- 普希金《致凯恩》 与荷尔德林《狄奥提玛》
- java计算机毕业设计民航售票管理系统源码+系统+数据库+lw文档+mybatis+运行部署
- 彩色图片用opencv批量转成黑底白底
- 服务器硬盘红灯常亮_硬盘指示灯一直亮
- Kaggle系列-Tweet Sentiment Extraction第一名方案
- 【课程作业】情感分析方向SKEP: Sentiment Knowledge Enhanced Pretraining for Sentiment Analysis阅读报告
- Next generation sequencing (NGS)二代测序数据预处理与分析