本文禁止其他人转载,违者必究!

目录

  1、项目背景
  2、奥运会相关信息爬取
   ① 导入相关库
   ② 爬虫代码完整讲解
  3、数据预处理
   ① 数据替换
   ② 数据分组
   ③ 中英文名映射转换
  4、可视化展示
   ① 2020东京奥运会各国金牌分布地图
   ② 2020东京奥运会奖牌榜详情堆积柱形图
   ③ 2020东京奥运会奖牌榜总数前十名柱形图
   ④ 2020东京奥运会金牌榜总数前十名柱形图
   ⑤ 2020东京奥运会中国各项目获奖详情饼图
   ⑥ 中国选手每日获得奖牌数折线图
   ⑦ 中国选手每日获得金牌数折线图
   ⑧ 中国选手夺金详细数据表格
   ⑨ 组合为可视化大屏

整体思路

1、项目背景

奥运会刚刚过去,你是否已经看过2020东京奥运会呢?本文将手把手带你爬取奥运会相关信息,并利用可视化大屏为你展示奥运详情。让一个没关注过奥运会的朋友,也能够秒懂奥运会。

学完本文后,你将学会如下可视化大屏的制作。

2、奥运会相关信息爬取

  • 爬取字段: 国家、国家ID、排名、金牌数、银牌数、铜牌数、奖牌总数、项目名、运动员、获奖类型、获奖时间;
  • 爬取说明: 基于两个接口的数据爬取【json格式的数据】,直接采用键值对的方式获取相关数据;
  • 使用工具: Pandas+requests

本文是基于两个接口的数据爬取,相对容易的多。

# 这个链接主要展示:各国的金银铜牌及其总数!
https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609# 这个链接主要展示:每个参赛队员的参赛项目和获得的奖牌情况!
https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609

① 导入相关库

import requests
import pandas as pd
from pprint import pprint
  • requests库用于发起网页请求,获取网页中的源代码;
  • pandas库用于存储和读取获取到的信息;
  • pprint库是漂亮的打印,对于json格式的数据,能够很好的展示结构,方便我们解析;

② 爬虫讲解

url = 'https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609'
data = requests.get(url).json()
pprint(data)

三行代码就可以获取到网页的源代码,利用pprint库,可以清晰的展示json结构,对于我们解析数据很有帮助。

从图中可以很清晰地看到,我们要的数据,都存在于body键下面的allMedalData键中,allMedalData键的值是一个列表,里面有很多字典组成的键值对信息,就是我们要爬取的数据。

直接利用键获取对应的值信息,代码如下:

df1 = pd.DataFrame()
for info in data1['body']['allMedalData']:name = info['countryName']name_id = info['countryId']rank = info['rank']gold = info['goldMedalNum']silver = info['silverMedalNum']bronze = info['bronzeMedalNum']total = info['totalMedalNum']# 组织数据orangized_data = [[name,name_id,rank,gold,silver,bronze,total]]# 然后追加dfdf1 = df1.append(orangized_data)
df1.columns = ['名称', 'ID', '排名', '金牌', '银牌', '铜牌', '奖牌总数']
df1

结果如下:

对于另外一个网页,我们采取同样的方式。

url = 'https://app-sc.miguvideo.com/vms-livedata/olympic-medal/detail-total/15/110000004609'
data2 = requests.get(url).json()
pprint(data2)

结果如下:

是不是此时感觉结构更清楚了?

df2 = pd.DataFrame()
for info in data2['body']['medalTableDetail']:english_name = info['countryName']name_id = info['countryId']award_time = info['awardTime']item_name = info['bigItemName']sports_name = info['sportsName']medal_type = info['medalType']# 组织数据orangized_data = [[english_name,name_id,award_time,item_name,sports_name,medal_type]]# 然后追加dfdf2 = df2.append(orangized_data)
df2.columns = ['英文缩写', 'ID', '获奖时间', '项目名', '运动员', '金牌类型']
df2

结果如下:

3、数据预处理

对于爬取到的数据,往往是有问题的,我们需要提前预处理一下,方便后续做可视化展示。

① 数据替换

对于上述爬取到的数据,我们做一个数据筛选。

df1 = pd.read_excel("各国奖牌数.xlsx")
df1[df1["名称"].str.contains("中国")]

结果如下:

虽说中国香港、中国台湾都单独参加了奥运会,但她们都属于中国,我们将她们的都改为中国,ID也都改为26。

df1["名称"].replace(["中国台北","中国香港"],"中国",inplace=True)
df1["ID"].replace([31,38],26,inplace=True)
df1[df1["名称"].str.contains("中国")]

结果如下:

② 数据分组

经过上述处理,那么中国就相当于有3条数据了。我们以名称+ID作为联合字段,进行分组,然后求和,将这3条数据进行合并。最后,再以金牌字段为基准,进行降序排列。

df2 = df1.groupby(["名称","ID"])[["金牌","银牌","铜牌","奖牌总数"]].sum().reset_index().sort_values(by="金牌",axis=0,ascending=False)
df2.head(10)

结果如下:

③ 中英文名映射转换

由于使用pyecharts绘制世界地图时,名称必须是英文的,所以我们需要将这里的中文名称映射为英文名称。于是我在网上找到了下面这个文件:

我们要做的就是将它与表格中的数据,做个映射转换。先把它转换为一个Excel文件吧,方便我们以后直接使用。

with open("国家名中英文对照表.txt","r",encoding="utf-8") as f:x = f.read()df3 = pd.DataFrame()
for i in x.split("\n"):x = i.split(":")[0].strip()y = i.split(":")[1].strip()orangined_data = [[x,y]]df3 = df3.append(orangined_data)
df3.columns = ["名称","英文名称"]
df3.to_excel("国家名中英文对照表.xlsx",index=None)

然后,在和上述的df2表格做一个左连接即可。

df4 = pd.merge(df2,df3,on="名称",how="left")
df4

结果如下:

4、可视化展示

关于可视化部分,使用的是pyecharts库。这部分一共分以下8个主题:

  • ① 2020东京奥运会各国奖牌分布图;
  • ② 2020东京奥运会奖牌榜详情;
  • ③ 2020东京奥运会奖牌榜总数前十名;
  • ④ 2020东京奥运会金牌榜总数前十名;
  • ⑤ 2020东京奥运会中国各项目获奖详情;
  • ⑥ 中国选手每日获得奖牌数;
  • ⑦ 中国选手每日获得金牌数;
  • ⑧ 中国选手夺金详细数据;

① 2020东京奥运会各国金牌分布图

② 2020东京奥运会奖牌榜详情

③ 2020东京奥运会奖牌榜总数前十名

④ 2020东京奥运会金牌榜总数前十名

⑤ 2020东京奥运会中国各项目获奖详情

⑥ 中国选手每日获得奖牌数

⑦ 中国选手每日获得金牌数

⑧ 中国选手夺金详细数据

⑨ 组合为可视化大屏


说明: 这里就不做结果分析了,因为通过上图,相信大家应该能够很清晰的了解到2020东京奥运会,哪怕你没看过。

Pyecharts“可视化大屏“,带你重温 “2020东京奥运会“,不看直播尽知其事!相关推荐

  1. pyecharts显示所有x轴_基于Pyecharts可视化大屏案例一(1)

    前  言 Pyecharts是一个用于生成Echarts图表的类库,可以通过python import方法加载使用,没有安装的需要pip install pyecharts安装一下:Pyecharts ...

  2. pyecharts 可视化大屏制作

    官方文档 简介 - pyecharts - A Python Echarts Plotting Library built with love. 先导入需要用到的包 import pyecharts. ...

  3. web大屏展示用到的组件_可视化大屏如何实现?怎样对接开发?看这就对了!

    前言 关于可视化大屏,好多人看到好多炫酷的大屏,视觉效果都非常棒,但是具体实现起来大家就充满了疑惑,今天就来聊一聊可视化大屏的具体实现方法.欢迎大家沟通交流. 大屏常见的实现方式 WEB 项目中最常用 ...

  4. 数据可视化大屏分析避孕套(爬虫+jieba分词+pyecharts可视化大屏)

    这是我数据可视化的期末项目,总体来说我觉得项目呈现达到了我想要的效果 代码开源在我的github仓库,文末会附上链接 大数据安全套分析 数据大屏的呈现 引言 随着时代的发展,性文化对年轻人的影响越来越 ...

  5. 用几小时,零基础也能学会可视化大屏,这百张模板帮了大忙

    几小时,零基础,不会代码也能学会可视化大屏,是不是觉得活在梦里? 并不是,因为这100多张模板帮了大忙 可视化现在为什么可以这么火?甚至很多地方都能看见? 尤其是IT人的职场,工作展示.领导汇报,动不 ...

  6. 老板要的物联网可视化大屏,我30分钟就搞定了

    摘要:不知道大家在生活中有没有见过一些非常酷炫的可视化大屏应用? 本文分享自华为云社区<老板要的物联网可视化大屏,我30分钟就搞定了>,作者:华为云社区精选 . 不知道大家在生活中有没有见 ...

  7. Python机器学习---Pyecharts制作可视化大屏

    文章目录 Pyecharts可视化 Map世界地图 柱状图.饼图 Pyecharts组合图表 ECharts是由百度开源的基于JS的商业级数据图表库,有很多现成的图表类型和实例,而Pyecharts则 ...

  8. 超简单,用Python Pyecharts制作可视化大屏

    经常有小伙伴问,如何制作数据可视化大屏? 今天主要详细讲一下Pyecharts制作可视化大屏. 注意,本文由于篇幅问题不会放置全部代码,会在提供文末全部代码的下载. ECharts是由百度开源的基于J ...

  9. 【Python】全文3000字,Pyecharts制作可视化大屏全流程! (附代码分享)

    就在上一篇的文章当中 干货分享 | 用Pyecharts绘制20钟不同风格的炫酷交互式图表,建议收藏 有粉丝提到说是不是可以写一篇用Pyecharts模块做可视化大屏的相关教程,小编立马就答应了他的请 ...

最新文章

  1. 4个可以写进简历的京东 NLP 项目实战
  2. python 相对路径
  3. 就业模拟试题_Net
  4. Java中类的初始化顺序
  5. CocosStudio的节点如何使用自定义shader
  6. Unity中所有特殊的文件夹
  7. 如何在Windows上安装Python
  8. SonarLint各种提示的意思
  9. erp管理软件是什么
  10. 首都师范 博弈论 5 5 1大联盟合作博弈中如何量化决策影响力 班扎夫权力指数
  11. SAP案例教程CO成本会计后台配置
  12. Google Play App送审被拒-违反权限政策
  13. Pr入门系列之十三:抠像与合成
  14. 【5年Android从零复盘系列之十七】Android自定义View(12):手势绘制及GestureOverlayView事件详解(图文)
  15. 西门子标准报文1常用_深入学习PROFIdrive驱动控制协议(1)
  16. PyEcharts数据可视化(1)——配置项
  17. 程序员的损失!Erlang 之父 Joe Armstrong 离世
  18. Java招聘的一些心得和建议
  19. 评委打分表模板_系高中英语作文模板——邀请信
  20. 嵌入式软件工程师面试题汇总

热门文章

  1. autolink android不显示下划线,Android开发技巧——去掉TextView中autolink的下划线
  2. PhotoShop初学 - 图片素材收录
  3. 说说那几款查看源代码的工具
  4. Matlab TreeBagger随机森林分类实例
  5. 断点续传——断点下载,类似迅雷、qq旋风那样支持断点下载
  6. 【Qt】 Driver not loaded 解决方案
  7. 关于高速中对一阶线性微分方程中的线性的理解,希望关注加点赞哦。
  8. 冷链物流运转 3D 可视化监控,助力大数据实时监控
  9. 初识MySQL的选择题_智慧树知到初识数据库—Mysql选择题答案
  10. 拆服务器芯片,ARM溃败:Applied Micro拆分ARM架构服务器芯片业务