中国奥运会成绩,知道多少?13张图告诉你

news/2024/11/29 1:42:55/

转自:尤而小屋 

作者:  peter

最近奥运会也是非常热门的事件,但是针对本次奥运会有很多值得吐槽的地方,小岛国的骚气操作不想写????

于是Peter从网上收集的我国从1984年第一次参加夏季奥运会到2016年的历届奥运会获奖情况,了解下历届的奥运会成绩。

数据整理成宽表长表两种形式,进行简单的数据处理和不同方式的可视化图形展示,方便大家了解我国的奥运会成绩。

文中全程使用的绘图工具是高级可视化库:plotly

图形预览

看看部分图形效果展示:

导入库

导入的库主要是两种:数据处理和绘图相关

# 数据处理相关
import pandas as pd
import numpy as np# 绘图相关
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots  # 制作多子图

两种形式数据

从网上收集的中国队历届夏季奥运会获奖情况,整理成两种形式:宽表和长表

1、宽表

宽表形式是将字段尽可能多罗列出来


2、长表

长表形式是将字段尽可能减少,同一个字段的数据信息可能出现重复


中国参加了多少届夏季奥运会

主要讲解的是Python中字符串格式化的知识点,3种不同的格式化展示方式:

  • 占位符%s

  • format()

  • f-string

总奖牌数

展示的是中国历届奥运会的总奖牌数变化趋势:

fig = px.line(df,x="地点",y="总数",text="总数")fig.update_layout(title="中国获得总奖牌数")fig.show()

从结果的图形中,我们看到2008年是最多的,刚好是100枚????毕竟是家门口的比赛

fig = px.scatter(df,x="地点",y="总数",color="金牌",size="总数",text="总数")fig.show()

男子和女子金牌对比

从结果中我们可以看出来:

  • 1984年第一次参加奥运会,男子金牌数量是高于女子的

  • 此后,每届都是女子高于男子:巾帼不让须眉????

多指标变化

fig = go.Figure()fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["总数"].tolist(),name="总数"
))fig.add_trace(go.Bar(x=df["年份"].tolist(),y=df["金牌"].tolist(),name="金牌"
))fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["银牌"].tolist(),name="银牌"
))fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["铜牌"].tolist(),name="铜牌"
))fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["金牌榜"].tolist(),name="金牌榜"
))fig.add_trace(go.Bar(x=df["年份"].tolist(),y=df["男子金牌"].tolist(),name="男子金牌"
))fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["女子金牌"].tolist(),name="女子金牌"
))fig.show()

多指标变化

通过子图的形式展示不同指标的变化趋势:

# 两个基本参数:设置行、列
fig = make_subplots(rows=4, cols=2,subplot_titles=["奖牌总数","金牌","银牌","铜牌","金牌榜","男子金牌","女子金牌","金牌占比"]) # 添加数据轨迹
fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["总数"].tolist(),name="总数"
),1,1)fig.add_trace(go.Bar(x=df["年份"].tolist(),y=df["金牌"].tolist(),name="金牌"
),1,2)fig.add_trace(go.Bar(x=df["年份"].tolist(),y=df["银牌"].tolist(),text=df["银牌"].tolist(),textposition="outside",name="银牌"
),2,1)fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["铜牌"].tolist(),name="铜牌"
),2,2)fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["金牌榜"].tolist(),mode="markers+text",text=df["金牌榜"].tolist(),textposition="bottom center",    # 位置name="金牌榜"
),3,1)fig.add_trace(go.Bar(x=df["年份"].tolist(),y=df["男子金牌"].tolist(),name="男子金牌"
),3,2)fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["女子金牌"].tolist(),name="女子金牌"
),4,1)fig.add_trace(go.Scatter(x=df["年份"].tolist(),y=df["金牌占比"].tolist(),mode="lines+markers",text=df["金牌占比"].tolist(),textposition="top center",name="金牌占比"
),4,2)# 设置图形的宽高和标题
fig.update_layout(height=600, width=800, title_text="奥运会奖牌可视化")
fig.show()

雷达图

雷达图展示的是不同年份的获奖情况

import plotly.graph_objects as gocategories = ['金牌','银牌','铜牌']fig = go.Figure()fig.add_trace(go.Scatterpolar(r=df.iloc[0,2:5].tolist(),theta=categories,fill='tonext',name='洛杉矶-1984'
))
fig.add_trace(go.Scatterpolar(r=df.iloc[1,2:5].tolist(),theta=categories,fill='tonext',name='汉城-1988'
))fig.add_trace(go.Scatterpolar(r=df.iloc[2,2:5].tolist(),theta=categories,fill='tonext',name='巴塞罗那-1992'
))
fig.add_trace(go.Scatterpolar(r=df.iloc[3,2:5].tolist(),theta=categories,fill='tonext',name='亚特兰大-1996'
))fig.add_trace(go.Scatterpolar(r=df.iloc[4,2:5].tolist(),theta=categories,fill='tonext',name='悉尼-2000'
))fig.add_trace(go.Scatterpolar(r=df.iloc[5,2:5].tolist(),theta=categories,fill='tonext',name='雅典-2004'
))
fig.add_trace(go.Scatterpolar(r=df.iloc[6,2:5].tolist(),theta=categories,fill='tonext',   # ['none', 'toself', 'tonext']name='北京-2008'
))fig.add_trace(go.Scatterpolar(r=df.iloc[7,2:5].tolist(),theta=categories,fill='tonext',name='伦敦-2012'
))
fig.add_trace(go.Scatterpolar(r=df.iloc[8,2:5].tolist(),theta=categories,fill='tonext',name='里约热内卢-2016'
))fig.update_layout(polar=dict(radialaxis=dict(visible=True,range=[0, 54])),showlegend=True
)fig.show()

小结:从雷达图的不同维度顶端触角,就可以观察到各自的最大值,比如金牌和铜牌最多的就是北京奥运会,银牌最多的是伦敦奥运会

⚠️:上面的图形都是基于宽表形式的数据,下面是基于长表形式

金银铜牌对比

3种不同奖牌的地点(年份)对比情况:

px.bar(df2,x="地点",y="数量",color="奖牌",text="数量",barmode="group")

多子图-不同年份的3种奖牌数

# 不共享y轴fig = px.scatter(df2,x="排名",y="数量",color="奖牌",size="数量",facet_col="年份",facet_col_wrap=3
)#fig.update_yaxes(matches=None)  # 不共享y轴fig.show()

图形解释:

  1. 横坐标:整体的排名。越靠左,数值越小,排名靠前。可以看到北京奥运会是最棒的:整体排名靠左

  2. 纵坐标:每个奖牌的数量,气泡越大,数量越多。银牌是2012年伦敦,铜牌是2008年北京(看点的高度)

3种奖牌整体占比

3种奖牌不同年份占比

3种奖牌在不同届奥运会的占比情况:

# 两个基本参数:设置行、列
fig = make_subplots(rows=3, cols=3,horizontal_spacing=0.08,vertical_spacing=0.1,column_widths=[0.4,0.4,0.4],specs=[[{"type":"domain"},{"type":"domain"},{"type":"domain"}],[{"type":"domain"},{"type":"domain"},{"type":"domain"}],[{"type":"domain"},{"type":"domain"},{"type":"domain"}]],subplot_titles=["1984-洛杉矶","1988-汉城","1992-巴塞罗那","1996-亚特兰大","2000-悉尼","2004-雅典","2008-北京","2012-伦敦","2016-里约热内卢"]) fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][:3].tolist(),name="1984-洛杉矶"
),1,1)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][3:6].tolist(),name="1988-汉城"
),1,2)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][6:9].tolist(),name="1992-巴塞罗那"
),1,3)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][9:12].tolist(),name="1996-亚特兰大"
),2,1)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][12:15].tolist(),name="2000-悉尼"
),2,2)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][15:18].tolist(),name="2004-雅典"
),2,3)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][18:21].tolist(),name="2008-北京"
),3,1)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][21:24].tolist(),name="2012-伦敦"
),3,2)fig.add_trace(go.Pie(labels=df2["奖牌"][:3].tolist(),values=df2["数量"][24:27].tolist(),name="2016-里约热内卢"
),3,3)fig.update_traces(hole=0.2)fig.show()

从图形可以看出来:

  • 北京奥运会占比最高:51%;其次是雅典奥运会

  • 1988年的汉城奥运会最低,才17.9%

3种奖牌旭日图

px.sunburst(df2,path=["奖牌","地点"],values="数量",color="年份",color_continuous_scale="RdBu")

根据3种奖牌的旭日图,能够看到3种奖牌各自的排序:

  • 金牌:北京、伦敦、雅典

  • 银牌:伦敦、亚特兰大、巴塞罗那

  • 铜牌:北京、里约热内卢、伦敦

总结

本文通过不同的可视化图形展示了我国的获奖情况,数据显示在北京奥运会中取得成绩是最亮眼的;其次,女子的金牌一直都是高于男子,女队员真的是巾帼不让须眉。希望在这次奥运会中国队再创辉煌!中国队????????,yyds!

最后推荐一下我们的星球:由菜鸟学Python原班人马建了一个投资星球,汇聚一批喜欢投资的朋友一起分享投资的技巧,不限于基金,股票等其他品种,提高自己的财商,一起读书打卡,欢迎加入。
推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领廖雪峰资料!

http://www.ppmy.cn/news/354572.html

相关文章

奥运会数据集分析

项目来自和鲸社区奥运会数据集分析 1. 数据载入与总览 1.1 数据加载 import numpy as np import pandas as pd %matplotlib inline import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDSimport warnings warnings.filterwarnings(ignore)#plt.rcPar…

今年的奥运会延期至2021年夏季举行,盘点一下历届奥运会数据

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 以下文章来源于CDA数据分析师 ,作者:CDA数据分析师 前言 2020年年初,突然袭来的新冠疫情给我们的生活带来了巨大的改变,与…

120年奥运会数据分析

文章目录 背景描述120年奥运会数据分析一.导入相应的包和数据集二. 数据清洗/处理三. 图表:词云 通过创建词云展示奥运会的热门运动项目,字体越大代表越热门四. 图表:饼图 分析奥运会男女参赛人数的比例五. 图表:箱线图 查看参赛者…

python北京奥运会_Python分析奥运会120年历史,谁才是奥运历史的王者?

主要探索分析奥运会的热门体育项目、得金牌数最多的国家,夏季冬季不同性别的参赛运动员的年龄,以及中国的在奥运会上的表现等问题。 项目链接,欢迎一键fork运行 目录 1. 导入包+基本的数据处理 2. 生成奥运会运动项目的词云(Word Cloud) 3. 查看参赛者的男女基本信息 3.1. 1…

夏季蚊子多_2020年夏季奥运会的7场疯狂比赛

夏季蚊子多 As I wrote a few months back, the speedrunning community is the most powerful force for good works in the entire gaming industry. Games Done Quick (GDQ) is the de facto organizing body of the community, putting together all the biggest events on…

热力夏季运动会 java,夏季运动会作文(小学生)

夏季运动会作文(小学生) 运动会指体育运动的竞赛会,有奥运会等大型运动会,只是范围不同。一起来看看关于夏季运动会作文,仅供大家参考!谢谢! 篇一:夏季运动会 今天我们学校举行了夏季运动会,运动…

奥运会数据集分析(部分)

数据科学应用案例实践报告 小组成员:XXX 主要方法:采用pandas 进行数据处理,采用Pyecharts 进行绘图 摘要: 针对奥运会2020夏季奥运会的相关分析,利用了python里面的pandas和pyecharts等相关的库,实现了数据清洗,数…

如何收看2020年夏季东京奥运会?

除了大多数重大活动,2020年夏季奥运会也因COVID-19大流行而推迟。东京2020年奥运会(2021年奥运会)将于2021年7月23日至8月8日在日本东京举行,并通过NBC在美国播出。 如何直播2020年奥运会开幕式 开幕式为奥运会搭建了舞台&#…