1、json数据格式
(1)什么是json
·一种轻量级的数据交互格式。可以按照json指定格式去组织和封装数据
·本质上是一个带有特定格式的字符串
·主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互
(2)json有什么用
各种编程语言存储数据的容器各不相同,在python中有字典dict这样的格式,而其他语言可能没有对应的字典。为了能让不同的语言能够互相传递数据,JSON就是一种非常良好的中转数据格式
(3)json格式化数据转化
通过json.dumps(data)方法将python数据转化为json数据
通过json.loads(data)方法将json数据转化为python数据
a. python数据转换为json数据
json的数据格式要么为字典,要么是列表
import json
# 准备符合json格式要求的python数据
data = [{"name":"Angle","age":18},{"name":"An","age":20},{"name":"Bob","age":22}]
#通过json.dumps(data)方法将python数据转化为json数据
data = json.dumps(data)
print(type(data))
由运行结果可以看出,json数据类型为字符串类型。
如果字典中含有汉字,则汉字输出为Unicode字符形式。如果想将内容正确展示,则执行下面代码
data_str = json.dumps(data,ensure_ascii=False) # 表示不用ASCll转换,直接显示内容
b. json数据转换为python数据类型
# 将json数据转换成python数据类型
s = '[{"name": "Angle", "age": 18}, {"name": "An", "age": 20}, {"name": "Bob", "age": 22}]'
data_list = json.loads(s)
print(type(data_list))
print(data_list)
2、pyecharts模块(快速入门)
官网:pyecharts - A Python Echarts Plotting Library built with love.
画廊:Document
画廊为我们提供了图表的相关代码
(1)构建基础折线图
# 导入包,导Line功能构建折线图对象 from pyecharts.charts import Line # 得到折线图对象 line = Line() # 添加x轴数据 line.add_xaxis(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]) # 添加y轴数据 line.add_yaxis("Series A", [15, 20, 45, 37, 43, 27, 33]) # 生成图表 line.render()
运行结果图像变成render.html文件,网页文件。
(2)pyecharts配置选项
a) 全局配置选项
配置图表的标题,配置图例,配置鼠标移动效果,配置工具栏等。
· set_global_opts方法
本例仅设置了工具箱,标题,视觉映射等全局配置项,详细信息可查看pyecharts官网
# 导入包,导Line功能构建折线图对象 from pyecharts.charts import Line from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts # 得到折线图对象 line = Line() # 添加x轴数据 line.add_xaxis(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]) # 添加y轴数据 line.add_yaxis("Series A", [15, 20, 45, 37, 43, 27, 33]) #设置全局配置项 line.set_global_opts(title_opts=TitleOpts(title="Line-基本示例", pos_left="center",pos_bottom="1%"), legend_opts=LegendOpts(is_show=True), toolbox_opts=ToolboxOpts(is_show=True), visualmap_opts=VisualMapOpts(is_show=True) ) # 生成图表 line.render()
b) 系列配置选项
(2)地图可视化
基础地图演示
from pyecharts.charts import Map from pyecharts.options import VisualMapOpts # 准备地图对象 map = Map() #准备数据 (注意要加上省和市,不然地图上无法显示数值) data = [ ("北京市", 100), ("上海市", 60), ("广州省", 70), ("成都市", 90), ("重庆市", 40), ("武汉市", 80), ("杭州市", 70), ("江苏省", 50), ("山东省", 6), ] # 添加数据 map.add("测试地图",data,"china") # "china"表示显示中国地图 # 设置全局选项 map.set_global_opts( visualmap_opts=VisualMapOpts( is_show=True, is_piecewise=True, # 手动校正视觉映像范围 pieces=[ {"min": 1, "max": 9, "label":"1-9人","color":"#CCFFFF"}, {"min": 10, "max": 99, "label":"10-99人","color":"#FFFF99"}, {"min": 100, "max": 499, "label":"99-499人","color":"#FF9966"} ]) ) # 绘图 map.render()
运行结果图:
(3)动态柱状图
3.1 基础柱状图
from pyecharts.charts import Bar from pyecharts.options import * # 构建柱状图对象 bar = Bar() # 添加x轴数据 bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) # 添加y轴数据 bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) bar.add_yaxis("商家B", [15, 6, 45, 20, 65, 80]) # 绘图 bar.render("bar_chart.html")
在 bar.render()代码的上方加入如下语句,可以实现x和y轴的反转
# 反转x、y轴 bar.reversal_axis()
让数值在右侧显示
# 添加y轴数据 bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90],label_opts=LabelOpts(position="right")) # 显示数值在右侧 bar.add_yaxis("商家B", [15, 6, 45, 20, 65, 80],label_opts=LabelOpts(position="right"))
3.2 基础时间线柱状图
时间线就是在x轴上提供非常多的点,每一个点都是一个完整的图表
from pyecharts.charts import Bar,Timeline from pyecharts.options import * from pyecharts.globals import ThemeType bar1 = Bar() bar1.add_xaxis(["中国","美国","英国"]) bar1.add_yaxis("GDP",[12,23,34],label_opts=LabelOpts(position="right")) bar1.reversal_axis() bar2 = Bar() bar2.add_xaxis(["中国","美国","英国"]) bar2.add_yaxis("GDP",[60,40,50],label_opts=LabelOpts(position="right")) bar2.reversal_axis() bar3 = Bar() bar3.add_xaxis(["中国","美国","英国"]) bar3.add_yaxis("GDP",[70,50,40],label_opts=LabelOpts(position="right")) bar3.reversal_axis() # 构建时间线对象(设置主题) timeline = Timeline({"theme": ThemeType.LIGHT}) # 在时间线内添加柱状图对象 timeline.add(bar1,"点1") timeline.add(bar2,"点2") timeline.add(bar3,"点3") # 设置自动播放 timeline.add_schema(play_interval=500, # 自动播放的时间间隔 is_timeline_show=True, # 是否在自动播放的时候,显示时间线 is_auto_play=True, # 是否自动播放 is_loop_play=True # 是否循环自动播放 ) # 绘图(是用时间线对象绘图,而不是bar对象) timeline.render("基础时间线柱状图.html")
3、数据处理
(1)通过json模块对数据进行处理
第一步:可通过懒人工具-手机APP工具下载-手机软件下载大全 - 173软件站网站先将待处理的json数据格式化查看层级关系。
第二步:去掉不合JSON规范的开头和结尾
第三步:JSON转字典
第四步:提取需要的数据