Python数据可视化2.3 体育案例
为了说明另一个案例以及某种可视化方法的优势,我们不妨考虑一个不同的问题:2015年2月美国足球四分卫球员的前五个最高纪录是哪几个?原始数据源为Len Dawson NFL和AFL Statistics。(数据来源:http://www.pro-football-reference.com/players/D/DawsLe00.htm。)
数据包括前22名四分卫球员的信息,他们是Peyton Manning、Brett Favre、Dan Marino、Drew Brees、Tom Brady、Frank Tarkenton、John Elway、Warren Moon、John Unitas、Vinny Testaverda、Joe Montana、Dave Krieg、Eli Manning、Sonny Jurgensen、Dan Fouts、Philip Rivers、Ben Roethlisberger、Drew Bledsoe、Boomer Esiason、John Hadle、Tittle和Tony Romo:
在我们考虑可视化之前,需要做一些分析工作。这些四分位球员参加比赛的时期不同。例如,Brett Favre参赛时间从1991年到2010年,Dan Marino参赛时间从1983年到1999年。挑战在于:如果使用条形图或气泡图,我们将只能得到一维的可视化结果。
进行可视化的第一步是解析CSV文件,这有几种选择,我们可以用pandas中的read_csv函数或csv模式,这些都有一些诸如DictReader的便利的函数:
四分卫数据可以从前面的数据源下载;过滤数据也同样可从http://www.knapdata.com/python/qb_ data.csv上下载。csv模式包括像字典一样用行表示类别,因此可以命名域。DictReader和DictWriter类将行翻译成字典,而不是列表。字典的关键要点能被输入或从输入的第一行进行推断(该行包括抬头标题)。通过DictReader可读取CSV文件的内容,其中的列输入值被视为字符串:
为了完成数据的数值型转换,我们可能需要一个转换和返回数值型数值的函数。我们也有额外的函数,如prepare.py 中的getcolors()和num(),这些将在下面的案例中使用:
呈现可视化结果
基于输入数据的域名,每一个四分卫球员的触地得分统计量和传球码数统计量可以画在同一个时间线上。知道绘图内容后,我们应弄清楚绘制方式。
用(年份,触地得分)和(触地得分,年份)域绘制简单的X-Y图应该是一个好的开始。然而,输入数据文件中的252位四分位球员绝大多数彼此无关。因此用不同颜色来展示没有意义。(没有意义的原因在于我们没有252种不同的颜色。)我们试图画出前7或前10种结果,如下图所示:
下面的Python程序表明怎样用matplotlib展示前10位四分卫球员的触地得分数。该程序的运行结果如上图所示:
将图(X,Y)转换为(Y,X),有足够的空间展示四分卫球员的名字。在上面的代码片段中,我们可能要做出如下改变:
如果我们转换x轴和y轴,就会有更多的空间展示四分卫球员的名字和触地得分总和,如上图所示。为了完成这项任务,我们需要转换x轴和y轴,根据新的x轴和y轴,在合适的位置添加标签。
乍一看,我们只能发现职业生涯中触地得分占领先位置的四分卫球员(2014~2015年足球赛季)。基于这种可视化,你可以进一步尝试分析和理解还能从数据中推断出什么结论。这些发现围绕下述问题的答案展开:
哪位四分卫球员职业生涯最长?
现在还有能超越Peyton Manning触地得分记录的四分卫球员吗?
在读取的输入文件中,Age正好是我们得到的其中一个字段值。用Age起始值绘制Age与Touchdown统计量有很多种试验方法。为了回答第一个问题,我们不得不跟踪Age而不是Year。下面的片段既可以用于一个单独的函数(如果常常被用到),也可以包含在主要脚本中:
运行上面的代码可知,44是四分位球员的最大年龄(在联赛中发挥积极作用时,有3位四分位球员:Warren Moon、Vinny Testaverde和Steve DeBerg。名义上,George Blanda在48岁前一直参赛(年龄最大的球员),但他一开始是四分位球员,也曾经当过几年球员)。
为了回答其他问题,我们用图表示触地得分统计量和四分位球员的年龄,代码如下:
当你看这些图的结果时,仅有两位四分位球员(Drew Brees和Tom Brady)在他们35岁时与Peyton Manning势均力敌。然而,考虑到Tom Brady的年龄和他目前的成就,似乎只有Drew Brees更有可能超越Peyton Manning的触地得分记录。
由下图可得出这个结论。该图是35岁球员数据的一个较简单的图。比较排名前四的四分卫球员的成绩(Peyton Manning、Tom Brady、Drew Brees和Brett Favre),我们发现Drew Brees在35岁时的成绩可与Peyton同龄时的成绩匹敌。尽管与纽约时报中“为什么Peyton Manning的记录难以超越”报道的结论不同,下图至少更倾向于Drew Brees有可能会打破纪录:
相关文章
- 【Python】python 日期操作
- Python MySQLdb模块连接操作mysql数据库实例_python
- python中实现延时回调普通函数示例代码
- Python-装饰器-案例-获取文件列表
- MVC模式:python案例
- Python编程:利用python编程实现对基于时间序列的数据(dataframe格式)按照指定时间范围进行单方向关联,不存在的日期补充为默认的NaN
- Python之pandas:特征工程中数据类型(object/category/bool/int32/int64/float64)的简介、数据类型转换四大方法、案例应用之详细攻略
- Python语言学习:Python语言学习之程序打包发布(exe/msi等)&如何将自己的Python项目(自定义程序代码库)发布到PyPI全流程的简介、案例应用之详细攻略
- Python语言学习:Python语言学习之列表/元祖/字典/集合的简介、案例应用之详细攻略
- Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- Python之pandas:特征工程中数据类型(object/category/bool/int32/int64/float64)的简介、数据类型转换四大方法、案例应用之详细攻略
- NLP之ASR:基于pyaudio利用python进行语音生成、语音识别总结及其案例详细攻略
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- Python语言学习:Python语言学习之列表/元祖/字典/集合的简介、案例应用之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Scale/Scale的Command)
- Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
- Python语言学习之数值、小数、空格那些事:python和数值、小数、空格的使用方法之详细攻略
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 〖Python自动化办公篇⑳〗 - python实现邮件自动化 - 发送html邮件和带附件的邮件
- 〖Python 数据库开发实战 - Python与Redis交互篇⑧〗- 利用 redis-py 实现缓存观众投票数据信息案例
- Python爬虫案例:下载文章数据,转制成PDF格式
- python爬虫案例:采集股票数据并制作可视化柱图~
- 从零开始学习python | 实例讲解如何制作Python模式程序
- 雅虎财经数据python 网络爬虫stock股票 用 Python 通过雅虎财经获取股票数据
- python工具方法 11 图像批量处理【灰度化、缩放、周边空白裁剪】
- Python开发案例之用Python子进程关闭Excel自动化中的弹窗