Pyecharts“可视化大屏“,带你重温 “2020东京奥运会“,不看直播尽知其事!(二)

简介: Pyecharts“可视化大屏“,带你重温 “2020东京奥运会“,不看直播尽知其事!(二)

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


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]]
    # 然后追加df
    df2 = df2.append(orangized_data)
df2.columns = ['英文缩写', 'ID', '获奖时间', '项目名', '运动员', '金牌类型']
df2


结果如下:

image.png


3、数据预处理

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


① 数据替换

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


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


结果如下:

image.png

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


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


结果如下:

image.png


② 数据分组

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


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


结果如下:

image.png


③ 中英文名映射转换

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

image.png

我们要做的就是将它与表格中的数据,做个映射转换。先把它转换为一个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


结果如下:

image.png

相关文章
|
5月前
|
人工智能 机器人 API
🤖 AstrBot 安卓 App:让每一个普通人都能拥有自己的 AI 聊天机器人
🤖 AstrBot 安卓 App:让每一个普通人都能拥有自己的 AI 聊天机器人
1743 5
🤖 AstrBot 安卓 App:让每一个普通人都能拥有自己的 AI 聊天机器人
|
前端开发
什么是精灵图?
什么是精灵图?
621 0
|
Web App开发 Rust JavaScript
webRTC 实现人脸识别
webRTC主要是帮我们处理多媒体应用,如音视频通话,屏幕共享都可以实现,主要基于浏览器API调用,其底层浏览器会调用native C++ 等一些库帮我们实现的,而我们在应用层掉API 即可。
549 0
webRTC 实现人脸识别
|
安全 网络协议 定位技术
决定海外代理IP网速快慢的六大因素
在全球化互联网时代,海外代理IP服务因能访问受限内容、保护隐私和提高网络安全而备受欢迎。本文探讨了决定海外代理IP网速的六大关键因素:服务器地理位置、带宽和性能、同时连接的用户数量、网络路径质量、代理类型与协议,以及用户端网络环境,帮助用户做出明智选择,享受快速稳定的代理服务。
|
人工智能 JavaScript 前端开发
【利用AI让知识体系化】入门Express框架(一)
【利用AI让知识体系化】入门Express框架
|
机器学习/深度学习 传感器 物联网
数字孪生技术框架:从数据到决策的桥梁
随着科技的飞速发展,数字孪生技术作为一种创新的信息化手段,正逐步渗透到各个行业领域,成为推动数字化转型的重要力量。数字孪生技术框架,作为支撑这一技术体系的核心架构,以其独特的层级结构,实现了从数据接入到决策控制的全面覆盖,为现实世界与数字世界的深度融合提供了坚实的基础。
833 5
|
监控 安全 网络安全
|
Linux 虚拟化 数据安全/隐私保护
VMware虚拟机安装Linux教程(Windows版)
VMware虚拟机安装Linux教程(Windows版)
|
API Python
除了Flask框架,还有哪些常用的Web框架?
除了Flask框架,还有哪些常用的Web框架?
641 2
|
SQL 关系型数据库 MySQL
10倍性能提升!一文读懂AnalyticDB MySQL秒级漏斗分析函数
营销域中的洞察分析/智能圈人/经营报表等场景是OLAP分析型数据库的重要应用场景,云原生数据仓库AnalyticDB MySQL在淘宝、饿了么、菜鸟、优酷、盒马等业务的营销场景有比较长时间的积累和沉淀,我们将通过一系列文章来介绍AnalyticDB MySQL在营销域数据产品中的落地与应用,本文主要介绍“漏斗分析”的实现与应用。