Python入门到精通(九)——Python数据可视化

Python数据可视化

一、JSON数据格式

1、定义

2、python数据和JSON数据转换

二、pyecharts

三、折线图

四、地图

五、动态柱状图


一、JSON数据格式

1、定义

  • JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
  • JSON本质上是一个带有特定格式的字符串
  • JSON就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互

2、python数据和JSON数据转换

如果有中文可以带上:ensure_ascii=False参数来确保中文正常转换

二、pyecharts

  • 安装pyecharts

     pip install pyecharts

  • 打开官方画廊:

    https://gallery.pyecharts.org/#/README

三、折线图

  • 导入模块:from pyecharts.charts import Line
  • 构建图表:line = Line( )
  • 生成图表:line.render( )
  • 全局配置:line.set_global_opts( )

折线图相关配置项

.add_yaxis相关配置选项

.set_global_opts全局配置选项

案例

需求美日印三国确诊人数对比折线图

代码示例

# 导入包
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts# 处理数据
f_us = open("F:/学习资料/Python/黑马/资料/可视化案例数据/折线图数据/美国.txt", "r", encoding="utf-8")
us_data = f_us.read()  # 美国的全部内容f_jp = open("F:/学习资料/Python/黑马/资料/可视化案例数据/折线图数据/日本.txt", "r", encoding="utf-8")
jp_data = f_jp.read()  # 日本的全部内容f_in = open("F:/学习资料/Python/黑马/资料/可视化案例数据/折线图数据/印度.txt", "r", encoding="utf-8")
in_data = f_in.read()  # 印度的全部内容
# 去掉不合json规范的开头
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")
# 去掉不合json规范的结尾
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]
# json转python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
# 获取trend key
us_trend_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']
# 获取日期数据,用于x轴,取2020年(公用)
us_x_data = us_trend_data['updateDate'][:314]  # 到12.31号
# jp_x_data = jp_trend_data['updateDate'][:314]  # 到12.31号
# in_x_data = in_trend_data['updateDate'][:314]  # 到12.31号
# 获取确诊数据,用于y轴,取2020年
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]
# 生成图表
line = Line()  # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data)  # x轴是公用的
# 添加y轴数据
line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=False))# 设置全局选项
line.set_global_opts(# 标题设置title_opts=TitleOpts(title="2020美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)
# 调用render方法生成图表
line.render("美日印三国确诊人数对比折线图.html")
# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()

运行结果

生成一个 美日印三国确诊人数对比折线图.html 文件

四、地图

  • 导入模块:from pyecharts.charts import Map
  • 构建图表:map = Map( )
  • 生成图表:map.render( )
  • 全局配置:map.set_global_opts( )

案例

需求:全国疫情地图

代码示例

# 导入模块
import json
from pyecharts.charts import Map
from pyecharts.options import *# 读取数据文件
f = open("F:/学习资料/Python/黑马/资料/可视化案例数据/地图数据/疫情.txt", "r", encoding="utf-8")
data = f.read()
# 关闭文件
f.close()
# 取到各省数据
# 将字符串json,转换为字典
data_dict = json.loads(data)
# 从字典中取各省份数据
province_data_list = data_dict["areaTree"][0]["children"]
# 组装每个省份和确诊人数为元组,并各个省的数据都封装入列表内
data_list = []  # 绘图所需要的数据列表
for province_data in province_data_list:province_name = province_data["name"] # 省份名称province_confirm = province_data["total"]["confirm"]  # 确诊人数data_list.append((province_name, province_confirm))
# 创建地图对象
map = Map()
# 添加数据
map.add("各省份确诊人数", data_list, "china")
# 设置全局配置,定制分段的视觉映射
map.set_global_opts(title_opts=TitleOpts(title="全国疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,  # 是否显示is_piecewise=True,  # 是否分段pieces=[{"min": 1, "max": 99, "label": "1-99人", "color": "#CCFFFF"},{"min": 100, "max": 990, "label": "100-999人", "color": "#FFFF99"},{"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#FF9966"},{"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#FF6666"},{"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#CC3333"},{"min": 100000, "label": "100000人以上", "color": "#990033"}])
)
# 绘图
map.render("全国疫情地图.html")

运行结果

生成一个 全国疫情地图.html 文件

五、动态柱状图

  • 导入模块:from pyecharts.charts import Bar,Timeline
  • 构建图表:bar= Bar( )
  • 创建时间线:timeline = Timeline( )
  • 生成图表:bar.render( )
  • 标签在右侧:label_opts=LabelOpts(position="right")
  • 反转x轴:bar.reversal_axis( )

案例

需求:动态GDP柱状图

代码示例

# 导入模块
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import *# 读取数据
f = open("F:/学习资料/Python/黑马/资料/可视化案例数据/动态柱状图数据/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除第一条数据
data_lines.pop(0)
# 将数据转换为字典存储,格式为:
# 定义一个字典对象
data_dict = {}
for line in data_lines:year = int(line.split(",")[0])  # 年份country = line.split(",")[1]  # 国家gdp = float(line.split(",")[2])  # gdp数据# 如何判断字典里有没有指定的key?try:data_dict[year].append([country, gdp])except KeyError:data_dict[year] = []data_dict[year].append([country, gdp])
# 创建时间线对象
timeline = Timeline({"theme": ThemeType.LIGHT})
# 排序年份
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:data_dict[year].sort(key=lambda element: element[1], reverse=True)# 取出本年前8名的国家year_data = data_dict[year][0:8]x_data = []y_data = []for country_gdp in year_data:x_data.append(country_gdp[0])  # x轴添加国家y_data.append(country_gdp[1] / 10000000)  # y轴添加gdp数据# 构建柱状图bar = Bar()x_data.reverse()y_data.reverse()bar.add_xaxis(x_data)bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))bar.reversal_axis()# 设置每一年标题bar.set_global_opts(title_opts=TitleOpts(title=f"{year}年全球前8GDP数据"))timeline.add(bar, str(year))# 设置时间线自动播放
timeline.add_schema(play_interval=1000,is_timeline_show=True,is_auto_play=True,is_loop_play=False
)
# 绘图
timeline.render("1960-2019全球GDP前8国家.html")

运行结果

生成一个 1960-2019全球GDP前8国家.html 文件

                                                       想要案例资料可以私信我~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496584.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习系列 -初探标准库之logging库

系列文章目录 第一章 初始 Python 第二章 认识 Python 变量、类型、运算符 第三章 认识 条件分支、循环结构 第四章 认识 Python的五种数据结构 第五章 认识 Python 函数、模块 第六章 认识面向对象三大特性 第七章 初探标准库之os库 第八章 初探标准库之pathlib库 第九章 初探…

卷积神经网络介绍

卷积神经网络(Convolutional Neural Networks,CNN) 网络的组件:卷积层,池化层,激活层和全连接层。 CNN主要由以下层构造而成: 卷积层:Convolutional layer(CONV)池化层&#xff1a…

如何在windows系统部署Lychee网站,并结合内网穿透打造个人云图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

批量自动加好友,轻松拓展微信人脉圈子

在当今社交化的时代,拓展社交圈子已经成为许多人努力追求的目标。而微信作为中国人群中最主流的社交工具之一,更是成为人们拓展社交圈子的重要场所。在这样的背景下,有没有一种简单而高效的方式来扩大微信人脉圈子呢?答案是肯定的…

【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)

目录 1、锁的策略 1.1、乐观锁和悲观锁 1.2、轻量级锁和重量级锁 1.3、自旋锁和挂起等待锁 1.4、普通互斥锁和读写锁 1.5、公平锁和非公平锁 1.6、可重入锁和不可重入锁 2、synchronized 内部的升级与优化过程 2.1、锁的升级/膨胀 2.1.1、偏向锁阶段 2.1.2、轻量级锁…

RunnerGo UI自动化测试脚本如何配置

RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队无需复杂的代码编写即可开展低代码的自动化…

第十四天-网络爬虫基础

1.什么是爬虫 1.爬虫(又被称为网页蜘蛛,网络机器人),是按照一定规则,自动的抓取万维网中的程序或者脚本,是搜索引擎的重要组成;比如:百度、 2.爬虫应用:1.搜索引擎&…

【web APIs】3、(学习笔记)有案例!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、概念其他事件页面加载事件元素滚动事件页面尺寸事件 元素尺寸与位置 二、案例举例电梯导航 前言 掌握阻止事件冒泡的方法理解事件委托的实现原理 一、概念…

✈️ 运输行业有哪些令人无法接受的网络安全事件?

Positive Technologies 专家举例说明 去年 9 月,Leonardo 订票系统遭到大规模 DDoS 攻击,导致全球网络中断,Aeroflot 航班难以办理登机手续。这导致谢列梅捷沃机场多趟航班延误起飞。 这只是 Positive Technologies 专家在其 2023 年交通领…

Golang使用Swag搭建api文档

1. 简介 Gin是Golang目前最为常用的Web框架之一。 公司项目验收需要API接口设计说明书(Golang后端服务基于Gin框架编写),编写任务自然就落到了我们研发人员身上。 项目经理提供了文档模板,让我们参考模板来手动编写,要…

【React源码 - 调度任务循环EventLoop】

我们知道在React中有4个核心包、2个关键循环。而React正是在这4个核心包中运行,从输入到输出渲染到web端,主要流程可简单分为一下4步:如下图,本文主要是介绍两大循环中的任务调度循环。 4个核心包: react:…

docker启动nginx,修改index.html文件默认网页返回没有生效

先跟着网上的方法做 # 进入目录 [rootkubesphere_1 html]# docker exec -it mynginx /bin/bash rootc57f1c95ab1b:/etc/nginx# vi nginx.conf # 先下载编辑工具 rootc57f1c95ab1b:/etc/nginx# apt-get update rootc57f1c95ab1b:/etc/nginx# apt-get install vim# 增加下面 —…