1.json数据格式
(1)定义:JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据,JSON本质是一个带有特定格式的字符串。(JSON无非就是一个单独的字典或一个内部是字典的列表)
(2)主要功能:JSON就是一种在各种编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。
json数据的格式是:
{"name":"admin","age":18}
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"john","age":23}]
(3)python数据和json数据的相互转化
import json
# 准备符合json格式的python数据
data=[{"name":"John","age":14},{"name":"Jane","age":20}]
# 通过json.dumps(data)方法把python数据转化为json数据
data2=json.dumps(data,ensure_ascii=False)# 如果带有中文就可以加后面一个参数,保证中文不变。
# 通过json.loads(data)方法把json数据转化为python数据
data3=json.loads(data2)
2.pyecharts模块
需要借助pyecharts模块实现数据可视化效果图
(1)开发可视化图表使用的技术栈:
Echarts框架的Python版本:PyEcharts包
(2)安装PyEcharts包:
打开命令提示符再输入:
pip install pyecharts
(3)查看官方示例:
https:gallery.pyecharts.org/#/README
3.pyecharts入门
(1)·基础折线图
from pyecharts.charts import Line
# 得到折线图对象
line = Line()
# 添加X轴数据
line.add_xaxis(["CHINA","AMERICA","GERMANY"])
# 添加Y轴数据
line.add_yaxis("2024年第一季度GDP",[41716,69187,11393])
# 生成图表
line.render()
运行后得到render.html文件,使用浏览器查看就可看到折线图了。
此为效果图:
(2)set_global_opts方法
全局配置选项可通过set_global_opts方法进行配置,实现配置图表的标题、配置图例、配置鼠标移动效果、配置工具栏等整体配置项
from pyecharts.charts import Line
from pyecharts.options import *
# 得到折线图对象
line = Line()
# 添加X轴数据
line.add_xaxis(["CHINA","AMERICA","GERMANY"])
# 添加Y轴数据
line.add_yaxis("2024年第一季度GDP",[41716,69187,11393])
# 设置全局配置项
line.set_global_opts(
title_opts=TitleOpts("GDP对比 图",pos_left="centry",pos_bottom="1%"),
legend_opts=LegendOpts(is_show=True),
toolbox_opts=ToolboxOpts(is_show=True),
visualmap_opts=VisualMapOpts(is_show=True),
tooltip_opts=ToolboxOpts(is_show=True),
)
# 生成图表
line.render()
效果图:
3.通过json模块对网络收集数据进行处理
import json
f_us = open("D:/美国.txt","r",encoding="UTF-8")
us_data = f_us.read() # 美国的全部内容
# 去除不合JSON格式匹配的开头
us_data=us_data.replace("jsonp_1629344292311_69436(","")
# 去除不合JSON格式匹配的结尾
us_data=us_data[:-2]
# JSON转为Python字典
us_dict=json.loads(us_data)
# 获取trend Key
us_trend_data = us_dict['data'][0]['trend']
# 获取日期数据,用于x轴,取2020年(到314下标结束)
us_x_data = us_trend_data['updateDate'][:314]
# 获取确诊数据,用于y轴,取2020年(到314下标结束)
us_y_data = us_trend_data['list'][0]['data'][:314]
4.创建折线图
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts
f_us = open("D:/美国.txt","r",encoding="UTF-8")
us_data = f_us.read() # 美国的全部内容
f_jp = open("D:/日本.txt","r",encoding="UTF-8")
jp_data = f_jp.read() # 日本的全部内容
f_in = open("D:/印度.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年(到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轴数据
line.add_xaxis(us_x_data) # x轴公用,所以使用一个国家的数据即可
# 添加Y轴数据
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False)) # 添加美国的y轴数据
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%")
)
# 生成图表
line.render()
# 关闭文件
f_jp.close()
f_us.close()
f_in.close()
效果图: