东京奥运会能如期举办吗?带你用数据看120年奥运变迁史
导读:今天带大家用数据可视化解读120年奥运变迁史。
奥运会参赛国数量和比赛项目有哪些变化? 各国累计奖牌数排名是怎样的? 参赛运动员的年龄和身高有哪些特征? 今天我们就带你用数据来好好盘一盘。
ID - 运动员的ID编号 Name - 运动员姓名 Sex - 性别 Age - 年龄 Height - 身高(cm) Weight - 体重(kg) Team - 队伍名称 NOC - 国家奥委会编码 Games - 年份和季节 Year - 年份 Season - 季节 City - 主办城市 Sport - 体育运动 Event - 比赛项目 Medal - 获奖情况(金牌、银牌、铜牌或无)
# 导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly as py
import plotly.graph_objs as go
import plotly.express as px
import plotly.figure_factory as ff
from plotly.subplots import make_subplots
pyplot = py.offline.plot
# 读入数据
df_athlete = pd.read_csv('./archive/athlete_events.csv')
df_regions = pd.read_csv('./archive/noc_regions.csv')
df_athlete.head()
df_athlete.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 271116 entries, 0 to 271115
Data columns (total 15 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ID 271116 non-null int64
1 Name 271116 non-null object
2 Sex 271116 non-null object
3 Age 261642 non-null float64
4 Height 210945 non-null float64
5 Weight 208241 non-null float64
6 Team 271116 non-null object
7 NOC 271116 non-null object
8 Games 271116 non-null object
9 Year 271116 non-null int64
10 Season 271116 non-null object
11 City 271116 non-null object
12 Sport 271116 non-null object
13 Event 271116 non-null object
14 Medal 39783 non-null object
dtypes: float64(3), int64(2), object(10)
memory usage: 31.0+ MB
df_regions.head()
将两个数据集横向合并为一个数据集,Key为NOC这一列 Sex:数据值替换 Medal:空值填充
# 合并数据
df_all = pd.merge(df_athlete, df_regions, how='left', on='NOC')
# 处理Sex列
df_all['Sex'] = df_all['Sex'].map({'M': 'Male', 'F': 'Female'})
# 处理Medal列
df_all['Medal'].fillna('No Medal', inplace=True)
df_all.head()
参赛国家数量变化
1976年蒙特利尔奥运会:出现了规模空前的反种族歧视行动,此次运动会遭到了非洲国家的抵制,规模远逊于上届。 1980年莫斯科奥运会:为了表示对苏联入侵阿富汗的谴责和愤怒,美国带头拒绝参加1980年的莫斯科奥运会,并号召其他国家一起抵制。在美国的号召下,最终一共有65个国家抵制莫斯科奥运会,占当时报名参赛国数量的五分之二。最后只有80个国家参加莫斯科奥运会, 大约5000余人参赛,参赛人数还没有参与报道的记者数量多,创历史记录。
比赛项目数量变化
各个国家累计奖牌数量TOP 20
每届参赛人数
参赛运动员男女人数和比例变化
参赛运动员年龄和奖牌数
参赛运动员的身高、体重分布
评论