微信改版,加星标不迷路!

用Python分析了1w四六级数据,教你如何通过四六级!

作者:阿广

概述

  • 前言

  • 数据介绍

  • 预期结果

  • 实现过程

  • 搞笑一刻

  • 阿广说

  • 每日问题

前言

陈奕迅说过:在有生的瞬间,考过四六级,竟花光所有运气。

马云说过:四六级还是要考的,万一过了呢。

曹雪芹说过:满纸荒唐言,一把辛酸泪。

爱迪生说过:四六级是1%的努力,加上99%的运气。

项羽说过:力拔山兮气盖世,却败给一场考试。

邓超说过:四六级没过的孩子,We are 伐木累。

阿广说过:考四六级英语这东西,三分天注定,七分考打拼,剩下的那700分就没办法了。

接下来带大家使用numpy和pandas对某大学的四六级情况进行分析统计,让我们看一下自己是否命中有六级?

数据介绍

从小角落中找到某大学的四六级成绩表,一共接近1w条数据,本想着四六级考试之前统计分析以下,太忙,所以一直拖到今天。

成绩表中有很多无效字段,例如操作时间等,经过处理,保留以下几个字段:

预期结果

利用上w条数据绘制出以下几点:

  1. 各个学院的四六级通过率

  2. 各个学院的各个年级的通过率

  3. 各个年级的通过率

  4. 各个学院的四六级平均成绩

  5. 男生女生通过率

例如,各个学院的过关人数:

实现过程

(1)导入依赖包

使用pandas进行分组转换,使用matplotlib进行绘图。

import pandas as pd
import matplotlib.pylab as plt

(2)加载数据

加载Excel类型的数据,使用pandas的read_excel生成DataFrame对象即可。

#加载全部数据
sj = pd.read_excel(r'D:\wx\Python_new\DataAnalysisNote-master\DataAnalysisNote-master\CET46\山东科技大学四六级.xls')

(3)求各个学院的平均分

想要各个学院的情况当然是要根据学院来进行分组了,同时也需要分出“CET4”和“CET6”两组。使用groupby即可,这样会生成一个SeriesGroupBy对象,然后再调用mean函数(默认是轴0计算,也就是我们想要的结果)即可统计出平均分情况。

#-----------------各个学院平均分------------------
#按照各个学院进行分组
xymean = sj['总分'].groupby([sj['院系名称'],sj['语言级别']])#计算各个学院的平均分数
xymean = xymean.mean()#将“语言级别”从行转换为列
xymean = xymean.unstack(level='语言级别')#使用横向柱状图显示
xymean.plot(kind='barh')import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']#在PyCharm中需要使用,在Ipython环境中如果以--pylab形式打开就不需要
#plt.show()

(4)筛选出过关人数

#过滤出过关人数
sjpass = sj[sj['总分'] >= 425]

(5)各个学院的通过人数

#按照各个学院进行分组
xypass = sjpass['总分'].groupby([sjpass['院系名称'],sjpass['语言级别']])#计算各个学院的过关总人数
xypass = xypass.count()#将语言级别作为columns
xypass = xypass.unstack(level='语言级别')#进行绘图
#xypass.plot(kind='barh')
#plt.show()

(6)各个学院年级通过人数

这次分组的时候加上年级即可,并且为了绘图比较好看一点,这次可以将“年纪”转换为列,并且像12年这种的有些学员已经没有人参加了,所以需要将缺失值用0填充:

#按照各个学院和年级进行分组
xypass = sjpass['总分'].groupby([sjpass['院系名称'],sjpass['语言级别'],sjpass['年级']])#计算各个学院的过关总人数
xypass = xypass.count()#将语言级别作为columns,并且将缺失值用0进行填充
xypass = xypass.unstack(level='年级').fillna(0)#xypass.plot(kind='barh')
#plt.show()

(7)各个年级通过人数

使用groupby对年级进行分组即可:

njpass = sjpass['总分'].groupby([sjpass['年级'],sjpass['语言级别']]).count().unstack(level='语言级别')
#njpass.plot(kind='barh')
#plt.show()

(8)男生女生通过人数

将性别和语言级别进行分组:

nvpass = sjpass['总分'].groupby([sjpass['性别'],sjpass['语言级别']]).count().unstack(level='语言级别')
nvpass.plot(kind='bar')
plt.show()

https://github.com/zandaoguang/CET6

或者点击查看原文即可获得源码

搞笑一刻

分发试卷时...

做听力时...

阿广说

从绘图的结果上来看的话,各个学院之间音乐学院的平均分比较低,艺术设计和外国语学院的平均分都比较高,但是过关人数却没有那么的多,尤其是艺术设计的人数比较少,主要也是因为该学院的总人数比较少。

四级的过关人数明显比六级的人数多的多,而且因为当时15级是大二,在贵学校大二才可以参加四六级考试,所以过关的人数里面15级占有比较大的比分。而且不得不承认,女生的过关率要比男生高的不止一点。

这次六级考试还不错,试卷印刷很清晰,题型也很全,监考老师服务态度也很好,五星好评,下次还会再来!

今日问题

你感觉英语对学习计算机的影响大吗?

打卡格式:打卡第n天,答:...

为什么打卡?戳下面你就知道了!

21/天/养/一/个/好/习/惯

用Python分析了1w四六级数据,教你如何通过四六级!相关推荐

  1. Python分析抖音用户行为数据,看看发什么样的视频才会爆!

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python分析抖音用户行为数据视频讲解地址 https://www.bilibili.co ...

  2. 用Python分析了1w场吃鸡数据,原来吃鸡要这么玩!

    微信改版,加星标不迷路! 用Python分析如何才能高效吃鸡? 作者:阿广 概述 前言 获取数据 观察数据 数据处理 吃鸡到底和哪个数据相关性最强? 分析热度图 期望研究的问题 结论 阿广说 推荐阅读 ...

  3. 用Python分析周杰伦歌曲并进行数据可视化

    大家好,今天我们用python分析下周杰伦歌曲.为了尽量完整地呈现从原始数据到可视化的过程,接下来我们会先简单讲解数据的预处理过程,即如何将 JSON 数据转化为Excel 格式,以及如何对周杰伦的歌 ...

  4. 你关注的房子降价了吗?Python分析下北京的二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 对于许多在一线城市打拼的人群而言,能够在大城市安家 ...

  5. 数据分析实战案例:手把手教你用 Python 分析千万级淘宝数据

    1.项目背景与分析说明 1)项目背景 网购已经成为人们生活不可或缺的一部分,本次项目基于淘宝app平台数据,通过相关指标对用户行为进行分析,从而探索用户相关行为模式. 2)数据和字段说明 本文使用的数 ...

  6. 用Python分析张同学dy评论数据

    首先 相信有很多小伙伴都喜欢玩抖音吧,最近抖音张同学突然火了,两个月涨粉一千多万.看了他的视频,满满的生活气息,让人有一种家的感觉.这就让我很感兴趣了,必须得用Python对他分析一下. 今天这篇文章 ...

  7. 数据挖掘-用python分析汽车油耗的csv数据(环境anaconda3和python3.6.1)

    数据文件:(汽车油耗分析都是基于这个文件进行分析的) 下载地址:https://www.fueleconomy.gov/feg/download.shtml 一.环境安装与配置 1.下载安装jupyt ...

  8. 用Python分析北京蛋壳公寓租房数据

    前言 大家好,我是J哥. 近期,蛋壳公寓"爆雷"事件持续发酵,期间因拖欠房东房租与租客退款,蛋壳公寓陷入讨债风波,全国多地蛋壳公寓办公区域出现大规模解约事件,而作为蛋壳公寓总部所在 ...

  9. 车厘子为何这么贵?还这么多人喜欢吃?Python分析了1500家店铺数据,发现了这些秘密!

    前言 一直以来我都是以大小来区分樱桃和车厘子的区别,那么他们的价格就是天差地别,现在我在水果店基本很少有看到卖樱桃的,但是车厘子一般情况下都有!车厘子这么贵为何还这么多人买?比樱桃好吃吗?车厘子的价格 ...

最新文章

  1. vue中的computed 与 watch
  2. oracle expdp导出教程,Oracle Expdp Impdp 数据泵导入导出
  3. 这是私人的事,法官大人
  4. ADB wifi调试步骤
  5. Docker由浅入深
  6. Filter过滤器拦截方式
  7. 【正点原子STM32连载】 第三十三章 光敏传感器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  8. 将中文姓名转为拼音英文名的一种实现
  9. 停课不停学的网络教学方案
  10. 魔兽延迟最低的服务器,魔兽世界延迟高怎么回事_魔兽世界延迟高解决方法_玩游戏网...
  11. 2019.4.8-pandas 读写csv;dorp删除行、列
  12. Linux 系统如何查看文件是32位还是64位?
  13. 科学论文的写作内容与要求
  14. CPU个数、CPU核心数、CPU线程数
  15. xnio-nio解决方法
  16. 光电耦合器的参数大全
  17. 【matlab选题推荐四】基于图像识别的人脸考勤系统
  18. 使用Diamond将宏基因组测序数据比对到Nr数据库
  19. python学习——非参数密度估计
  20. matlab has encountered,matlab崩溃,matlab has encountered an internal problem needs to close

热门文章

  1. 发布了!2020年AI人才发展报告,最高补助1000万!
  2. 应聘苹果数据科学家,你需要知道些什么?
  3. “夸夸机器人”App来了:变身百万粉丝大V,48万人给你的帖子点赞
  4. 时间可以是二维的?基于二维时间图的视频内容片段检测 | AAAI 2020
  5. 给Chrome“捉虫”16000个,Google开源bug自检工具
  6. 程序员四大焦虑瞬间:拿什么拯救你,我日益后退的发际线?
  7. 两次杀人,自动驾驶技术之恶
  8. 号称下一代监控系统,来看看它有多强!
  9. Spring Boot 启动时,让方法自动执行的 4 种方法!
  10. SpringMVC:注解@ControllerAdvice的工作原理