目录
1. json数据格式
JSON是一种轻量级的数据交换格式,它基于文本,具有易于阅读和编写的特性,同时也被广泛用于存储和传输数据。
具体来说,JSON数据格式有以下几个特点:
- 易于解析:与XML相比,JSON的解析更为简单和快速,因为它是基于文本的,可以被JavaScript原生支持,并且大多数编程语言都有解析JSON的库。
- 结构紧凑:JSON数据结构紧凑,占用的空间小,这使得它在网络传输时更加高效。
- 可读性强:JSON的可读性很强,它的设计初衷之一就是便于人类阅读和编写。
- 兼容性好:JSON可以在不同的平台和语言之间进行数据交换,而不受特定语言或平台的限制。
1.1 json.dumps()
将数据转换为json格式
# 准备列表,列表内每一个元素都是字典,将其转换为JSON
data = [{"name":"张大山","age":11}, {"name":"王大锤","age":13}, {"name":"赵小虎","age":16}]
json_str = json.dumps(data, ensure_ascii=False)
print(type(json_str))
print(json_str)
# 准备字典,将字典转换为JSON
d = {"name":"周节伦", "addr":"台北"}
json_str2 = json.dumps(d, ensure_ascii=False)
print(json_str2)
运行如下:
1.2 json.loads()
将json()字符串转换为python数据类型
# 将json字符串转换为python数据类型,[{k:v, k:v}, {k:v, k:v}]
s = '[{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]'
l = json.loads(s)
print(l)
# 将json字符串转换为python数据类型{k:v, k:v}
s = '{"name": "周杰伦", "addr": "台北"}'
l = json.loads(s)
print(l)
2. pyecharts的入门使用(折线图)
Pyecharts是一个基于ECharts的Python数据可视化库,它允许用户通过Python代码轻松生成丰富的交互式图表。以下是关于pyecharts的详细介绍:
- 基本概念:Pyecharts是为了让Python开发者能够利用ECharts的强大功能来创建美观的数据可视化图表。ECharts是一个由百度开源的商业级数据图表库,它提供了多种图表类型和丰富的交互性功能。
- 安装方法:安装pyecharts相对简单,可以通过pip命令进行安装,使得Python用户可以快速开始使用这个库。
- 图表类型:Pyecharts支持多种图表类型,包括柱形图、折线图、饼图等,满足不同的数据展示需求。它还提供了一些特殊的图表类型,如词云和可视化地图,这些是其他库如matplotlib和seaborn不支持的。
- 配置选项:Pyecharts提供了丰富的配置选项,用户可以根据自己的需求定制图表的颜色、标签、图例等元素。此外,它还支持链式调用和多种主题选择,使得创建图表的过程更加直观和灵活。
- 示例代码:Pyecharts的官方文档中包含了许多示例代码,这些示例涵盖了从基本图表到复杂图表的绘制过程,帮助用户快速学习和使用这个库。
- 优点:相比其他数据可视化库,pyecharts的操作更加简洁,API设计友好,即使是没有前端开发经验的Python开发者也能快速上手。它的图表具有可交互性,可以提升数据展示的效果,并且可以轻松移植到PPT等演示文稿中。
2.1 pyecharts使用的简单示例
2.1.1 导包
# 导包
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts, VisualMapOpts
2.1.2 创建对象
# 创建一个折线图对象
line = Line()
2.1.3 添加x轴数据
# 给折线图对象添加X轴都得数据
line.add_xaxis(["中国", "美国", "英国"])
2.1.4 添加y轴数据
# 给折线图对象添加y轴都得数据
line.add_yaxis("GDP", [30,20,10])
2.1.5 设置全局配置项
line.set_global_opts
是 pyecharts 库中用于设置全局配置项的方法。它接收一个名为 opts
的参数,该参数是一个字典,包含了各种全局配置选项。以下是一些常用的全局配置选项:
title_opts
:设置图表标题的配置项,如标题文本、字体大小等。tooltip_opts
:设置提示框的配置项,如触发类型、格式化函数等。legend_opts
:设置图例的配置项,如图例位置、布局方式等。xaxis_opts
:设置 x 轴的配置项,如坐标轴类型、刻度间隔等。yaxis_opts
:设置 y 轴的配置项,如坐标轴类型、刻度间隔等。datazoom_opts
:设置数据区域缩放组件的配置项,如启用状态、缩放范围等。visualmap_opts
:设置视觉映射组件的配置项,如颜色映射范围、颜色映射类型等。toolbox_opts
:设置工具箱组件的配置项,如启用状态、功能列表等。brush_opts
:设置刷子组件的配置项,如刷子类型、刷子形状等。
# 设置全局配置项
line.set_global_opts(
title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%"),
legend_opts=LegendOpts(is_show=True),
toolbox_opts=ToolboxOpts(is_show=True), # 工具箱
visualmap_opts=VisualMapOpts(is_show=True) # 视觉映射
)
2.1.6 render()方法,生成图像
# 通过render方法,将代码生成为图像
line.render()
3. 折线图开发示例
通过读取已有数据文件,制作2020年美日印三国疫情确诊人数对比折线图
美日印数据展示如下:
通过解析json数据,数据的结构如下:
"""
演示可视化开发,折线图开发
"""
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts, VisualMapOpts, LabelOpts
# 处理数据
f_us = open("D:\pydaima\8day速成python\shuju\美国.txt", "r", encoding="UTF-8")
us_data = f_us.read() # 读取到美国的全部内容,赋值给us_data
f_jp = open("D:\pydaima\8day速成python\shuju\日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read() # 读取到日本的全部内容,赋值给jp_data
f_in = open("D:\pydaima\8day速成python\shuju\印度.txt", "r", encoding="UTF-8")
in_data = f_in.read() # 读取到印度的全部内容,赋值给in_data
# 去掉不合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年(到314下标结束)
us_x_data = us_trend_data['updateDate'][:314]
jp_x_data = jp_trend_data['updateDate'][:314]
in_x_data = in_trend_data['updateDate'][:314]
# 获取确诊数据,用于y轴,去2020年(到314下标结束)
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轴对象,x轴是共用的,添加一个x轴即可
line.add_xaxis(us_x_data)
# 添加y轴数据
line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False)) # 添加美国的y轴数据,label_opts使生成图表不显示数据
line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False)) # 添加日本的y轴数据
line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=False)) # 添加印度的y轴数据
# 设置全局选项
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()
生成图像:
标签:pyecharts,python,jp,us,json,2.1,data,opts From: https://blog.csdn.net/weixin_63106307/article/details/137107025