奥林匹克历史数据分析与金牌预测(上)

2023-10-30 07:50

本文主要是介绍奥林匹克历史数据分析与金牌预测(上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是关于现代奥林匹克运动会的历史数据集,包括从1896年雅典到2016年里约奥运会的所有比赛。在2018年5月从www.sports-reference.com上抓取这些数据。文件athlete_events.csv包含271116行和15列。 每一行对应于参加个人奥运会(运动员比赛)的个体运动员。

 

列信息:

  1. ID - Unique number for each athlete
  2. Name - Athlete's name
  3. Sex - M or F
  4. Age - Integer
  5. Height - In centimeters
  6. Weight - In kilograms
  7. Team - Team name
  8. NOC - National Olympic Committee 3-letter code
  9. Games - Year and season
  10. Year - Integer
  11. Season - Summer or Winter
  12. City - Host city
  13. Sport - Sport
  14. Event - Event
  15. Medal - Gold, Silver, Bronze, or NA

数据集截图概要如下:

 

 

下面我们从10个问题来了解这120年来奥运会的发展轨迹:

问题1: 那些10个国家获得的奖牌数最多呢?

 

先看看我们奖牌的分布情况,这里我们观察到一个数据就是数据集里面很多比赛是最终产生奖牌的,而且金牌,银牌,铜牌的数据也不相同,有意思的是金牌最多。

 

    那么历史上获得奖牌数最多的10个国家是哪些呢?这里先要把没有奖牌的的数据过滤出去,然后按照国家分组即可,参考下面的代码。

#只选择夏季奥运会

athlete = athlete[athlete['Season'] == 'Summer']

 

def countmedalcountrys():

    athlete_winners = athlete[athlete.Medal.notnull()]

    winner_team = athlete_winners.groupby('Team').size().to_frame('medal_count')

    #采用升序排列

    winner_team = winner_team.reset_index().sort_values('medal_count',ascending=False)

    return winner_team.head(10)

 

def Drawmedalcountrys(data):

    x = data['Team'].astype(str)

    y = data['medal_count'].astype(str)

    ax = data.plot.bar(x='Team',y='medal_count')

    ax.set_xlabel('Top 10')

    ax.set_ylabel('Counts')

    plt.show()

    print (data)

 

top10data = countmedalcountrys()

Drawmedalcountrys(top10data)

 

这里我们将数据打印出来,这里可以清楚的看到美帝还真是体育强国足足领先苏联一倍的奖牌数,就算加上后期俄罗斯也差距惊人。

 

再用图表可视化显示一下可以更明显看出比例:

        

问题2:哪些国家在哪一界内获得在奖牌数最多,是多少块,哪一年?

 

这里分析一下我们要将每界比赛,每个国家获得的奖牌数进行分组,并进行排序即可得到答案。        

 

def  countMaxMedalCountry():

         athlete_winners = athlete[athlete.Medal.notnull()]

         return athlete_winners.groupby(['Team','Year']).size().to_frame('medal_count').reset_index().sort_values('medal_count',ascending=False).head(10)

 

这里打印出来的数据也是可以看到美国在多个年份都雄霸奖牌数第一,但1980年苏联获得了巨大的成功,我查了下原来1980年时莫斯科奥运会,主场作战难怪呢。

 

问题3 :为了了解每个国家体育发展的情况,我们去绘制一条国家在历届奥运会中的奖牌发展曲线,这里以中国为例

 

def  DrawAndCountCountry():

         athlete_winners = athlete[athlete.Medal.notnull()]

         winner_team = athlete_winners.groupby(['Team','Year']).size().to_frame('medal_count').reset_index().sort_values('Year',ascending=False)

         winner_team = winner_team[winner_team.Team == "China"]

 

         ax = winner_team.plot(x='Year',y='medal_count')

         ax.set_title( "China")

         ax.set_xlabel('Year')

         ax.set_ylabel('Counts')

         plt.show()

 

数据分析的可以看到在2008年我们达到了顶峰,当然也是主场作战,但从1986年开始总体是越来越好的

 

问题4:找出举办奥运会最多Top 5城市

                   分析这个问题很简单主要是找到城市对应的分组即可。

 

问题5:每届奥运会男女运动员的比例走势图?

 

def DrawSexTrend():

         #分别统计每年男女运动员数量

         sexathlete = athlete.groupby(["Year","Sex"]).size()

         #将树形索引变为表格索引

         sexathlete = sexathlete.unstack()

         ax = sexathlete.plot()

         ax.set_title( "Sex")

         ax.set_xlabel('Year')

         ax.set_ylabel('Counts')

         plt.show()

 

从绘制的图表看到男性运动员的数量远远超过女性运动员,但这种情况正在好转,大有接近的趋势。

 

 

问题6:男性与女性运动员参与最多的运动项目

 

def StatSexEvents():

         sexevents = athlete.groupby(["Event","Sex"]).size().sort_values(ascending=False).reset_index()

         print (sexevents[sexevents.Sex=='M'].head(5))

         print (sexevents[sexevents.Sex=='F'].head(5))

 

 

可以看到男性运动员中足球参与的人数最多,女性中是女排,可惜呀,中国男足一直不争气。

 

问题5:近几年奥运会新增了哪些项目,又去除了哪些项目?

 

def LastNewEvents():

         #将所有的重复项目都去除,这样留下的就是每年新增的

         yeathlete = athlete[["Year","Event"]].sort_values('Year',ascending=True).drop_duplicates(subset=['Event'],keep='first')

         print ("Which were the last 5 events to be included in the Olympics?")

         print (yeathlete.sort_values(["Year"], ascending= False).head(5))

         #将所有项目按照时间降序排列

         yeathlete = athlete[["Year","Event"]].sort_values('Year',ascending=False).drop_duplicates(subset=['Event'],keep='first')

         print ("\nWhich were the last 5 events taken out from Olympic?")

         print (yeathlete[yeathlete.Year != 2016].head(5))

 

 

 

 

从上面数据可以看出为什么女性运动员越来越多了,因为2016新增的五项赛事有四项都是针对女性运动员的。

这篇关于奥林匹克历史数据分析与金牌预测(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306516

相关文章

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

从希腊神话到好莱坞大片,人工智能的七大历史时期值得铭记

本文选自historyextra,机器之心编译出品,参与成员:Angulia、小樱、柒柒、孟婷 你可能听过「技术奇点」,即本世纪某个阶段将出现超级智能,那时,技术将会以人类难以想象的速度飞速发展。同样,黑洞也是一个奇点,在其上任何物理定律都不适用;因此,技术奇点也是超越未来理解范围的一点。 然而,在我们到达那个奇点之前(假设我们能到达),还存在另一个极大的不连续问题,我将它称之

win7下安装Canopy(EPD) 及 Pandas进行python数据分析

先安装好canopy,具体安装版本看自己需要那种,我本来是打算安装win764位的,却发现下载总是出现错误,无奈只能下载了32位的! https://store.enthought.com/downloads/#default 安装好之后,参考如下连接,进行检验: 之后再根据下面提供的连接进行操作,一般是没问题的! http://jingyan.baidu.com/article/5d6

「大数据分析」图形可视化,如何选择大数据可视化图形?

​图形可视化技术,在大数据分析中,是一个非常重要的关键部分。我们前期通过数据获取,数据处理,数据分析,得出结果,这些过程都是比较抽象的。如果是非数据分析专业人员,很难清楚我们这些工作,到底做了些什么事情。即使是专业人员,在不清楚项目,不了解业务规则,不熟悉技术细节的情况下。要搞清楚我们的大数据分析,这一系列过程,也是比较困难的。 我们在数据处理和分析完成后,一般来说,都需要形成结论报告。怎样让大

Tensorflow lstm实现的小说撰写预测

最近,在研究深度学习方面的知识,结合Tensorflow,完成了基于lstm的小说预测程序demo。 lstm是改进的RNN,具有长期记忆功能,相对于RNN,增加了多个门来控制输入与输出。原理方面的知识网上很多,在此,我只是将我短暂学习的tensorflow写一个预测小说的demo,如果有错误,还望大家指出。 1、将小说进行分词,去除空格,建立词汇表与id的字典,生成初始输入模型的x与y d

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重

Git Gui 查看分支历史的时候中文显示乱码

如图所示 在Git Gui工具栏上选择-编辑-选项: 选择:Default File Contents Encoding, change为UTF-8 成功:

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中,用户界面设计和数据处理紧密结合,以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论,尤其是如何通过PyQt5等图形界面库实现交互式功能。同时,我们将探讨如何通过嵌入式预测模型为用户提供赛果预测服务。 本文的主要内容包括: 基于PyQt5的图形用户界面设计。结合数据进行比赛预测。文件处理和数据分析流程。 1. PyQt5 图形用户界面设计

CNN-LSTM模型中应用贝叶斯推断进行时间序列预测

这篇论文的标题是《在混合CNN-LSTM模型中应用贝叶斯推断进行时间序列预测》,作者是Thi-Lich Nghiem, Viet-Duc Le, Thi-Lan Le, Pierre Maréchal, Daniel Delahaye, Andrija Vidosavljevic。论文发表在2022年10月于越南富国岛举行的国际多媒体分析与模式识别会议(MAPR)上。 摘要部分提到,卷积