基于Python对奥运历史运动员和成绩的数据分析

您所在的位置:网站首页 奥运会数据查询 基于Python对奥运历史运动员和成绩的数据分析

基于Python对奥运历史运动员和成绩的数据分析

2024-07-11 20:00| 来源: 网络整理| 查看: 265

一、数据说明 1、背景介绍

       该数据集是现代奥运会的历史数据集,包括从1896年雅典奥运会到2016年里约奥运会的所有奥运会。

       需要注意的是,冬季和夏季奥运会在同一年举行,直到1992年。在那之后,他们错开了它们,以便冬季奥运会以四年为周期举行,从1994年开始,然后是1996年的夏季,然后是1998年的冬季,依此类推。人们在分析这些数据时常犯的一个错误是假设夏季和冬季奥运会一直是错开的。

       本篇主要是基于120年的奥运历史:运动员和成绩这个数据集去进行探索,对数据进行清洗分析,然后对数据进行可视化分析,通过作图来展现这份数据的不同方面。如,奥运会参赛人数的变化、运动选手男女的比例、运动选手的年龄身高体重等等。

2、数据内容

文件athlete_events.csv包含 271116 行和 15 列。每排对应一名参加个人奥运项目(运动员项目)的运动员。这些列是:

ID - 每个运动员的唯一编号 姓名 - 运动员姓名 性别 - M 或 F 年龄 - 整数 高度 - 以厘米为单位 重量 - 以公斤为单位 团队 - 团队名称 NOC - 国家奥委会 3 个字母代码 游戏 - 年份和季节 年份 - 整数 季节 - 夏季或冬季 城市 - 主办城市 体育 - 运动 事件 - 事件 奖牌 - 金牌、银牌、铜牌或 NA 3、数据来源

该数据集包含两个文件,分别为athlete_events.cdv(参赛运动员基本数据)、noc_regions.csv(国家奥委会3个字母的代码与对应国家信息)

来源于kaggle*台用户的分享

具体信息内容源自:奥运120年历史:运动员与成绩 |卡格尔 (kaggle.com)

 二、数据可视化分析

首先将数据进行导入并分别读取打印出两个表格的前五排

#读取文件并打印出前五排 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from pyecharts.charts import * from pyecharts import options as opts from pyecharts.commons.utils import JsCode plt.style.use('ggplot') athlete_data = pd.read_csv('C:/Users/Ethereal/python文本/athlete_events.csv') noc_data = pd.read_csv('C:/Users/Ethereal/python文本/noc_regions.csv') athlete_data.head(5)

 

#读取noc_data数据前五排 noc_data.head(5)

 为了对数据更好的进行可视化,将athlete_data和noc_data两个文件中的数据进行合并,并打印出前五行,结果如下:

#合并两个文件中的数据data=pd.merge(athlete_data,noc_data,on='NOC',how='left')data.head(5)

#查看athlete_data中是否有缺失值 data.info()

 通过上面输出结果可以得知,合并后的新数据并没有缺失值,所以无需进行缺失值处理。

#重复值处理 #设置保留最后一个值 data.drop_duplicates()

接下来开始对数据进行分析

#奥运会参赛人数变化 plt.figure(figsize=(16,5)) sns.countplot('Year',data=data,hue='Season',palette='Set2') plt.xticks(np.arange(0,len(data.Year.unique()),2)) plt.legend(loc='upper left') plt.title("奥运会参赛人数变化") plt.show()

 从图中可以看出,参加奥运会的人数在逐渐增加,直到1996年开始人数逐渐趋于*稳。

#饼图 #历届奥运会男女比例 m_f_ration=data.drop_duplicates() m_f_ration=m_f_ration.groupby(by="Sex")["Sex"].count() m_f_ration=m_f_ration/m_f_ration.sum()*100 sex_data=[z for z in zip(m_f_ration.index,m_f_ration)] pie = (Pie() .add('', sex_data,radius=["20%", "55%"]) .set_global_opts( title_opts=opts.TitleOpts(title="历届奥运会男女比例",pos_left='center'), legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")) ) pie.render_notebook()

 通过对所有奥运会运动员男女分别求和,后可得出历届奥运会男女运动员的比例。通过可视化知,女运动员占历届奥运会运动员的27.57%,男运动员占总体数量的72.43%。因为早期奥运会由于社会等原因导致参加奥运会的女性太少,以至于分析男女比例时差距巨大。

#奥运会运动员年龄 age_distribute=data.dropna(subset=['Age']) age_distribute.Age.describe()

 接着对奥运会运动员的年龄进行分析,通过运行结果可得在这120年奥运会中最小运动员的年龄仅10岁,最大年龄的运动员有97岁。

#查看各个项目小于18岁的人数 data[data.Age


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3