第32届夏季奥林匹克运动会(Games of the XXXII Olympiad),即 2020 年东京奥运会于 2021年7月23日开幕。本次奥运会共有204个国家和地区、俄罗斯奥运队和奥林匹克难民代表团 2个参赛队伍参赛,各国运动员在这一个多月进行比拼争夺,在此期间,美国、日本和中国多次交替出现在奖牌榜第一名。东京奥运会的竞争非常激烈,金牌榜的排名不断变更,而且本次奥运会新增了滑板、冲浪、竞技攀岩、棒垒球和空手道5个赛事项目。部分国家在某些赛事项目充分地突出了自身的优势,获取了多枚金牌。在8月8日,本届奥运会落下帷幕,中国共获得 38 枚金牌、32枚银牌、18枚铜牌,奖牌数共88枚,而美国以一枚金牌“全胜”中国,位居世界第一。
本项目旨在利用数据分析挖掘技术,探索并清洗东京奥运会奖牌榜和各奖牌赛程记录等数据,分析2020东京奥运会奖牌分布情况和奖牌变化情况,并且利用Pyecharts将分析结果可视化。
学习目标
利用数据分析挖掘技术,清洗并分析东京奥运会奖牌数据。
运用Pyecharts库可视化奥运会数据分析结果。
任务描述
为了更好地分析和理解奖牌数据,从而基于奖牌数据提供有价值的信息和见解,帮助决策者做出更好的决策和规划,为他们提供有价值的参考信息和建议,帮助他们做出更好的决策和规划。
任务分析
明确了解奖牌数据的需求和目标。
分析奖牌数据的特点和趋势,例如奖牌分布情况、各国家和地区的表现。
1.奥运会奖牌在世界国家的分布情况:通过国家名称和奖牌数量分析出奖牌在各个国家的整体分布情况。
2.主要国家奖牌分布情况:通过筛选出主要国家的奖牌数据统计出奖牌的分布情况。
3.我国奖牌分布与变化情况:通过我国在奥运会比赛中的奖牌数据,包括年份和奖牌数量统计出奖牌的分布情况及变化情况。
4.我国与竞争国家奖牌情况:通过我国和竞争国家在奥运会历届比赛中的奖牌数据统计分析出我国与竞争国家奖牌情况
1.运用 Pyecharts 可视化分析奥运会奖牌在世界国家的分布结果:使用Pyecharts进行数据可视化,结合地图或其他合适的图表展示世界各国家的奖牌分布情况。
2.运用 Pyecharts 可视化分析主要国家奖牌分布情况结果:使用Pyecharts进行数据可视化,展示主要国家的奖牌分布情况,可以使用柱状图或其他适合的图表。
3.运用 Pyecharts 可视化分析我国奖牌分布与变化情况结果:使用Pyecharts进行数据可视化,展示我国奖牌的分布和变化情况,可以使用折线图或其他适合的图表。
4.运用 Pyecharts 可视化分析我国与竞争国家奖牌情况结果:使用Pyecharts进行数据可视化,比较我国与竞争国家的奖牌情况,可以使用条形图或其他适合的图表。
任务描述
为了确保能够顺利地使用Pandas、Pyecharts、matplotlib.pyplot库进行数据分析和可视化工作,通过数据分析和可视化,可以更好地理解和解释奥运会奖牌的数据、发现数据中的规律和关联,进而提升决策的准确性和效果。
任务分析
调用Pandas库对奥运会奖牌数据进行数据分析。
调用Pyecharts库对奥运会奖牌数据进行数据分析。
调用matplotlib.pyplot库对奥运会奖牌数据进行数据分析
Pandas是一个在Python中常用的数据处理和分析库。它提供了高效且灵活的数据结构,使得数据操作更加简单、快速和方便。以下是Pandas库的一些主要特点和功能:
1. 数据结构:Pandas主要支持两种核心数据结构:Series和DataFrame。
(1)?Series:类似于一维数组的对象,具有标签(label)和数值(value)。可以通过标签进行索引、切片和操作。每个Series对象可以包含不同类型的数据,如整数、浮点数、字符串等。
(2)DataFrame:类似于二维表格的数据结构,由多个Series对象组成。DataFrame具有行索引和列索引,可以进行行和列的增删改查操作。它可以存储和处理结构化数据,如CSV文件、数据库中的数据等。
2. 数据处理和操作:Pandas提供了丰富的函数和方法来处理和操作数据。
(1)数据清洗:可以清除缺失值(NaN)、重复值、异常值等。可以使用插值、填充等方法处理缺失值。
(2)数据筛选和切片:可以根据标签、位置、条件等对数据进行筛选、选择和切片操作。
(3)数据聚合和分组:可以进行分组、聚合和汇总操作,如求和、均值、最大值、最小值等。
(4)数据合并和拼接:可以根据一定的规则将多个DataFrame合并为一个,或者将一个DataFrame拆分为多个。
3. 数据分析和统计:Pandas提供了丰富的统计函数和方法,可以进行描述性统计、频数统计、分位数统计、相关性分析等。
4. 数据可视化:Pandas与其他Python数据可视化库(如matplotlib和Seaborn)结合使用,可以创建各种类型的静态和动态图表,如柱状图、线图、散点图、饼图等。
总之,Pandas是一个功能强大的数据处理和分析库,它的灵活性和高效性使得我们可以更好地处理、分析和理解数据,以便做出基于数据的决策和洞察。无论是数据清洗、数据转换、数据聚合、数据统计,还是数据可视化,Pandas都是数据科学家和分析师们经常使用的重要工具之一。
Pyecharts是一个用于在Python中创建交互式图表和可视化的库。它基于Echarts,一个流行的基于JavaScript的可视化库,提供了方便易用的Python接口。以下是Pyecharts库的一些主要特点和功能:
1. 多种图表类型:Pyecharts支持多种常见的图表类型,包括柱状图、折线图、散点图、饼图、雷达图、地图等,并提供了丰富的配置选项和样式定制。
2. 交互式可视化:Pyecharts生成的图表具有交互性,支持放大、缩小、滚动、动画和工具箱等功能,用户可以通过鼠标和键盘与图表进行交互,查看详细信息和切换视图。
3. 大数据展示:Pyecharts能够处理大量数据,并提供了数据视觉化的优化方案,包括针对大数据量的渲染和绘制优化,保证了绘制效果和性能的平衡。
4. 地理数据可视化:Pyecharts提供了丰富的地图展示功能,可以绘制全球、国家、省级、市级等地理位置的图表,支持各种常见的地图投影和地理数据的可视化。
5. 主题和样式定制:Pyecharts提供了多种图表主题和样式模板,可以轻松定制图表的颜色、标签、标题、图例等,使得生成的图表更加美观和个性化。
6. 导出和嵌入:Pyecharts支持将生成的图表导出为静态图片或HTML文件,可以方便地分享和嵌入到网页、报告或其他文档中。
总之,Pyecharts是一个功能强大且易于使用的可视化库,通过简单的Python代码,可以快速生成各种交互式图表和可视化效果。无论是探索数据、展示结果、传达信息,还是做出数据驱动的决策,Pyecharts都能为用户提供丰富的可视化解决方案。它被广泛应用于数据科学、数据分析、商业智能、地理信息等领域,成为Python数据可视化的重要工具之一。
matplotlib.pyplot是matplotlib库的一个子模块,它提供了一个类似于MATLAB的绘图接口,用于在Python中创建静态、动态和交互式图表。以下是matplotlib.pyplot库的一些主要特点和功能:
1. 绘图功能:matplotlib.pyplot提供了丰富的函数和方法来创建各种类型的图表,如线图、柱状图、散点图、饼图、直方图等。它支持多种图形元素的绘制,如线条、点、填充区域等。
2. 图表样式和格式:matplotlib.pyplot允许用户灵活地定制图表的样式和格式,包括坐标轴刻度、标题、标签、图例、颜色、线型、标记等。用户可以通过函数参数、属性设置或样式表来控制图表的外观。
3. 坐标系和轴:matplotlib.pyplot支持多种坐标系的绘制,包括笛卡尔坐标系、极坐标系、对数坐标系等。用户可以自定义坐标轴的刻度、标签、范围和显示格式。
4. 图表组合:matplotlib.pyplot允许用户将多个图表组合在一个图形中,可以通过子图(subplot)、网格布局和图层叠加等方式实现。这样可以在同一个图形中展示多个数据集或视图。
5. 图表保存和导出:matplotlib.pyplot支持将生成的图表保存为静态图片文件(如PNG、JPEG、SVG等格式)或矢量图文件(如PDF、EPS、SVG等格式),以便后续使用或分享。
6. 交互式可视化:matplotlib.pyplot可以与其他库和工具结合,实现交互式可视化。例如,可以通过与IPython和Jupyter Notebook集成,实现动态图表的展示和交互操作。
总之,matplotlib.pyplot是一个功能强大且灵活的绘图库,可以满足用户在数据分析、科学研究、工程绘图等领域中的绘图需求。它是Python数据可视化的重要工具之一,被广泛应用于各种学术研究、数据探索、数据报告和数据展示任务中。
任务描述
通过对东京奥运会奖牌数据的读取与探索,可以发现奖牌的分布模式、不同国家和运动项目的走势、参赛国家的变化等。这有助于了解体育项目的发展趋势、国家体育实力的演变和新兴体育强国的崛起。
任务分析
了解东京奥运会奖牌数据的基本情况
本项目的数据来源于央视网 2020 东京奥运会,一共有 4 份数据,分别是东京奥运会奖牌榜数据(national_medal.xlsx)、各赛事项目金牌得主数据(golds.xlsx)、各赛事项目银牌得主数据(silvers.xlsx)和各赛事项目铜牌得主数据(bronzes.xlsx)。
东京奥运会奖牌榜数据的具体数据字段说明如表 3-1?所示。
表 3-1??东京奥运会奖牌榜数据字段说明
字段名 | 说明 |
排名 | 2020 东京奥运会奖牌榜排名 |
国家 | 参加项目赛事得奖的国家和地区 |
金牌 | 获取金牌数量 |
银牌 | 获取银牌数量 |
铜牌 | 获取铜牌数量 |
总数 | 获取奖牌总数量 |
nationid | 国家英文缩写(非标准国家缩写,仅用于本项目数据) |
3 份各赛事项目奖牌得主数据的数据字段一致,具体数据字段说明如表 3-2 所示。
表 3-2 各赛事项目奖牌得主数据字段说明
字段名 | 说明 |
日期 | 奥运会赛事项目确定名次日期 |
项目 | 奥运会赛事项目 |
获得者 | 奖牌获得者 |
名次 | 奥运会赛事项目获奖名次(金牌得主数据名次为 1,银牌得 主数据名次为 2,铜牌得主数据名次为 3) |
countryid | 国家英文缩写(非标准国家缩写,仅用于本项目数据) |
注:详细数据请参照:D:/项目二/data/golds.xlsx
任务描述
经观察得知,各赛事项目奖牌得主原始数据存在较多的缺失值,不便直接用于对奖牌的数据分析,因此需要对各赛事项目奖牌得主数据进行预处理。
任务分析
通过对数据观察发现原始数据中存在整行数据全为空值,空值的数据可能是数据导
入excel表记录造成。这类数据对于问题影响不大,因此对其进行丢弃处理,具体处理方法即丢弃整行全为空值的记录。
各赛事项目奖牌得主数据分析缺失值使用删除法进行处理,如代码4-1所示。
import pandas as pd golds=pd.read_excel(‘data/golds.xlsx’) silvers=pd.read_excel(‘data/silvers.xlsx’) bronzes=pd.read_excel(‘data/bronzes.xlsx’) golds=golds.dropna(axis=0,how=’any’) sivers=silvers.dropna(axis=0,how=’any’) bronzes=bronzes.dropna(axis=0,how=’any’) golds[‘日期’]=pd.DatetimeIndex(golds[‘日期’]) silvers[‘日期’]=pd.DatatimeIndex(silvers[‘日期’]) bronzes[‘日期’]=pd.DatatimeIndex(bronzes[‘日期’]) golds.to_excel(‘gold.xlsx’) silvers.to_excel(‘silver.xlsx’) bronzes.to_excel(‘bronze.xlsx’) ##除去缺失值,建立新表 |
将东京奥运会奖牌榜数据表中国家英文缩写属性nationid修改成countryid。并将处
理后的三个金银铜表通过表拼接形成一个大表,将数据整合在一起,方便进行综合分析和统计。通过拼接形成一个大表,以获得所有奥运会项目的完整奖牌信息,并可以更方便地对数据进行筛选、排序、分组、计算等操作。更全面地了解奥运会项目的奖牌情况,包括各个国家和地区的成绩、历届奥运会的统计数据、不同项目的比较等。同时,大表的形成也为后续的数据分析和可视化提供了更便捷的数据源。
将东京奥运会奖牌榜数据表属性修改及将处理后的三个金银铜表实现表拼接,如代码4-2 所示。
代码 4-2?表修改及表拼接
import pandas as pd national medal=pd.read_excel(‘data/national_medal.xlsx’,sheet name=‘nations’) countryid=[‘排名‘,‘国家’,‘金牌’,‘银牌’,‘铜牌’,‘总数’,‘countryid’] nationid=[‘排名‘,‘国家’,‘金牌’,‘银牌’,‘铜牌’,‘总数’,‘nationid’] national_medal=national_medal[nationid] national_medal.columns=countryid national_medal.to_excel(‘national_medal.xlsx’) #三个表行拼接为 wu =pd.concat([golds,silvers,bronzes],ignore_index=True) #三个表行拼接 wu.to_excel(‘sum.xlsx‘) #左外连接 itemsum=pd.merge(national_medal,wu,left_on=”countryid”,right_on=”countryid”,how=”left”) itemsum.to_excel(‘itemtoge.xlsx‘) |
任务描述
为深入了解不同国家在东京奥运会上的体育实力和成就,通过分析奖牌在世界国家的分布情况,了解各国在奥运会中取得的成绩和表现,进一步了解各国的体育实力和发展水平。比较不同国家和地区的成绩并通过对奖牌分布的分析,可以比较不同国家和地区在奥运会上的成绩。比如,哪些国家在某个特定体育项目上表现突出、哪些国家在全球范围内的奖牌数量有显著差距等,并帮助我们更好地了解全球体育格局、不同国家的体育实力和发展,为体育决策和发展规划提供支持和指导。
任务分析
为实现数据在世界地图上的可视化,世界地图需要知道国家的英文名称,需通过查
讯百度百科以及excel一系统操作,得到表world_eng.xlsx。
该表数据的具体数据字段说明如表 5-1?所示。
表 5-1??world_eng数据字段说明
字段名 | 说明 |
三字母代码 | 世界各国所具有的三个字母组成的代码名称 |
英文简称 | 世界各个国家的英文名称 |
注:详细数据请参照:D:/项目二/world_eng.xlsx
为分析奥运会奖牌在世界国家的分布情况,可运用python的pyecharts库实现对奖牌数据的数据可视化,使数据在世界地图上得以展示。如代码5-1所示。
代码 5-1?世界地图数据可视化
import pandas as pd #世界各国和地区名称代码 left_table = pd.read_excel('world_eng.xlsx') right_table = pd.read_excel('national_medal.xlsx') left_right = pd.merge( ????????left_table, ????????right_table, ????????left_on='三字母代码', ????????right_on='countryid', ????????) print(left_right) left_right.to_excel('nation-eng.xlsx') from pyecharts import options as opts from pyecharts.charts import Map import pandas as pd import os datas=pd.read_excel('nation-eng.xlsx') datas['总数'] = datas['总数'].astype('float') # 基础数据 value = datas['总数'] attr = datas['英文简称'] data = [] for index in range(len(attr)): ????city_ionfo = [attr[index], value[index]] ????data.append(city_ionfo) # 打开html c = ( ????Map() ????.add("世界地图", data, "world") ????.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) ????.set_global_opts( ????????title_opts=opts.TitleOpts(title="2020年东京奥运会奖牌总数分布图"), ????????visualmap_opts=opts.VisualMapOpts(max_=200), ????) ????.render() ) os.system("render.html") |
在生成的世界地图上可以任意观看到每个世界获奖在东京奥运会上所获得的奖牌数目
并伴有热力图展示,准确表示出奥运会奖牌在世界国家的分布情况,效果图如图5-1所示。
图 5-1世界地图效果图
注:详细数据展示请参照:D:/项目二/render.html
未完待续,下期更精彩