Python 数据处理可视化(阶段三)

一,JSON数据格式

1.定义:![JSON是一种取代XML的**数据结构**,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输
2. 格式:
{} 双括号表示对象(python中的字典) {“name”: “Michael”}
[] 中括号表示数组(python中的列表)[{“name”: “Michael”},{“name”: “Jerry”}]
3. 主要功能:json是在各种编程语言中流通的格式,负责不同的编程语言中数据传递和交互,类似于:国际通用语言:英语 ,中国的 普通话
4. 格式转换实例图:在这里插入图片描述
5. python与JSON数据格式转换
(1)调用JSON模块中的dumps()方法转换为JSON类型在这里插入图片描述
在这里插入图片描述
(2)调用JSON模块中的loads()方法转换为Python数据类型在这里插入图片描述

# 导入json模块
import json
# 准备符合格式json格式要求的python数据列表
data = [{"name": "老王", "age": 16}, {"name": "张三", "age": 20}]#列表
data2={"name":"张三","age":23}#字典
print("测试定义的data数据类型",type(data))
print("测试定义的data2数据类型",type(data2))
# 通过 json.dumps(data) 方法把python数据转化为了 json数据
data = json.dumps(data)
data2 = json.dumps(data2)
print("测试转换后的data数据类型",type(data))
print("测试转换后的data2数据类型",type(data2))
# 通过 json.loads(data) 方法把json数据转化为了 python数据
data = json.loads(data)
data2 = json.loads(data2)
print(type(data))
print(type(data2))


在这里插入图片描述
在这里插入图片描述
结果:在这里插入图片描述

二,pyecharts模块介绍与安装

  1. 模块介绍:Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
  2. 第三方包安装:在Pycharm终端输入命令: pip(3) install pyecharts
  3. 其拥有一个画廊网站画廊地址,各种图形实例展示。

三,pyecharts入门

  1. 创建折线图,运行后目录中出现html文件,用浏览器运行即可。
#导入包构建折线图对象
from pyecharts.charts import Line
#print(pyecharts.__version__)#查看版本
#from pyecharts import options as opts
#2.得到折线图对象,建立空的二维坐标系
line=Line()
#3.添加X,Y轴坐标
line.add_xaxis(["中国","美国","英国"])
line.add_yaxis("GDP",[100,20,50])
#4画出折线图
line.render()

在这里插入图片描述
在这里插入图片描述
5. 全局配置选项,通过set_global_opts()方法配置。属于通用配置,不管是折线图,柱状图都可以用来设置:标题配置项,图例配置项…
在这里插入图片描述
3.line.set_global_opts()方法参数选择使用:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

#导入包构建折线图对象
from pyecharts.charts import Line
#print(pyecharts.__version__)#查看版本
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
#2.得到折线图对象,建立空的二维坐标系
line=Line()
#3.添加X,Y轴坐标
line.add_xaxis(["中国","美国","英国"])
line.add_yaxis("GDP",[100,20,50])
#设置全局配置项,set_global_opts()方法的参数很多,选择使用
line.set_global_opts(
    title_opts=TitleOpts(title="GDP展示",pos_left="10%"),
    #设置图例选项
    legend_opts=LegendOpts(is_show=True),
    # 设置工具箱选项
    toolbox_opts=ToolboxOpts(is_show=True),
    visualmap_opts=VisualMapOpts(is_show=True)
)


#4画出折线图
line.render()


在这里插入图片描述

四,数据处理,创建折线图

  1. 美国疫情状况数据:
    在这里插入图片描述

  2. (1)选取正确的Json 格式内容到Json数据查看网站,查看数据试图
    在这里插入图片描述
    (2)使用DevToys软件查看:微软商城下载
    在这里插入图片描述

  3. 用Python语言根据试图分级情况选取相应数据:

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LabelOpts

#1.打开读取,读取文件数据
file1_data=open("F:\Python学习资料\资料\可视化案例数据\折线图数据/美国.txt","r",encoding="UTF-8")
US_data=file1_data.read()

file2_data=open("F:\Python学习资料\资料\可视化案例数据\折线图数据/日本.txt","r",encoding="UTF-8")
JP_data=file2_data.read()

file3_data=open("F:\Python学习资料\资料\可视化案例数据\折线图数据/印度.txt","r",encoding="UTF-8")
In_data=file3_data.read()
#2.数据清理整洁,去掉不规范开头
US_data=US_data.replace("jsonp_1629344292311_69436(","")
JP_data=JP_data.replace("jsonp_1629350871167_29498(","")
In_data=In_data.replace("jsonp_1629350745930_63180(","")
#3.去掉不规范结尾得到规范的JSON格式数据
US_data=US_data[:-2]#取到倒数第二个 ,但不包含倒数第二位
JP_data=JP_data[:-2]#取到倒数第二个 ,但不包含倒数第二位
In_data=In_data[:-2]#取到倒数第二个 ,但不包含倒数第二位
#4.导包JSON,并使用方法转换为Python字典
us_data=json.loads(US_data)
jp_data=json.loads(JP_data)
in_data=json.loads(In_data)
# print(us_data)
# print(jp_data)
# print(in_data)
#5.获取到需要的数据
us_trend_data=us_data['data'][0]['trend']
jp_trend_data=jp_data['data'][0]['trend']
in_trend_data=in_data['data'][0]['trend']
#6.获取日期数据,用于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]
#7.Y轴数据,拿到确诊数据
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]
#8.构建图表,导包
line=Line()#构建折线图对象
line.add_xaxis(Us_X_data)#x轴数据共用且一样所以只需要添加一个国家的数据
line.add_yaxis("美国确诊人数",Us_Y_data,label_opts=LabelOpts(is_show=False))#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%')



)
#生成图表
line.render()
#9关闭文件
file1_data.close()
file2_data.close()
file3_data.close()

在这里插入图片描述

五,地图可视化

5.1基础地图使用

  1. 简单地图生成测试
#导包
from pyecharts.charts import Map
#准备地图对象
map=Map()

#准备数据
data=[("北京市",99),("上海市",199),("湖南省",299),("台湾省",399),("广东省",499)]
#添加数据
map.add("测试地图",data,"china")
#绘图
map.render()

在这里插入图片描述

  1. set_global_opts设置属性
#导包
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
#准备地图对象
map=Map()

#准备数据
data=[("北京市",567),("上海市",1199),("湖南省",59),("台湾省",11150),("广东省",499)]
#添加数据
map.add("测试地图",data,"china")
#设置全局选项
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,#允许手动设置校准范围,空置颜色深度等
        pieces=[
            {"min":1,"max":9,"lable":"1-9人","color":"#CCFFFF"},
            {"min":10,"max":99,"lable":"10-99人","color":"#FFFF99"},
            {"min":100,"max":499,"lable":"100-499人","color":"#FF996"},
            {"min":500,"max":999,"lable":"500-999人","color":"#FF6666"},
            {"min":1000,"max":9999,"lable":"1000-9999人","color":"#CC3333"},
            {"min":10000,"lable":"10000以上","color":"#990033"},

        ]
    )
)
#绘图
map.render()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2国内疫情地图

  1. 通过网站中数据格式化查看数据层级关系,以便取得需要的数据。
    在这里插入图片描述
"""
演示全国疫情可视化地图开发
"""
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转换为python的字典
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))
#print(data_list)

# 创建地图对象
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, "lable": "1~99人", "color": "#CCFFFF"},
            {"min": 100, "max": 999, "lable": "100~9999人", "color": "#FFFF99"},
            {"min": 1000, "max": 4999, "lable": "1000~4999人", "color": "#FF9966"},
            {"min": 5000, "max": 9999, "lable": "5000~99999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+", "color": "#990033"},
        ]
    )
)
# 绘图
map.render("全国疫情地图.html")

在这里插入图片描述

六,柱状图

6.1基础柱状图

  1. 竖着表示的柱状图
from pyecharts.charts import Bar
#创建对象
bar=Bar()
#添加数据
bar.add_xaxis(["中国","美国","英国"])
bar.add_yaxis("GDP",[120,30,40])
#绘图
bar.render("基础柱状图.html")

在这里插入图片描述
2. 横着表示的柱状图(反转轴)调用reversal_axis()方法

from pyecharts.charts import Bar
#创建对象
bar=Bar()
#添加数据
bar.add_xaxis(["中国","美国","英国"])
bar.add_yaxis("GDP",[120,30,40])
#反转柱状图轴
bar.reversal_axis()
#绘图
bar.render("基础柱状图.html")

在这里插入图片描述
3. 修改标签数字位置

label_opts
在这里插入图片描述

6.2基础时间线柱状图绘制

  1. 时间线Timeline(),为了实现柱状图动态描述数据变化,在时间线上不同点给出不同的柱状图,时间线运行时柱状图形成动态变化。
from pyecharts.charts import Bar,Timeline
from pyecharts.options import LabelOpts

bar1=Bar()
bar1.add_xaxis(["中国","美国","英国"])
bar1.add_yaxis("GDP",[30,20,10],label_opts=LabelOpts(position="right"))#将数字靠右显示
bar1.reversal_axis()

bar2=Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[60,40,30],label_opts=LabelOpts(position="right"))#将数字靠右显示
bar2.reversal_axis()

bar3=Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[90,60,50],label_opts=LabelOpts(position="right"))#将数字靠右显示
bar3.reversal_axis()

time_line=Timeline()
time_line.add(bar1,"点1")
time_line.add(bar2,"点2")
time_line.add(bar3,"点3")

#自动播放设置
time_line.add_schema(
    play_interval=1000,#自动播放时间间隔,毫秒
    is_timeline_show=True,#是否显示自动播放 的时候时间线
    is_auto_play=True,#是否自动播放
    is_loop_play=True#是否循环播放
)
"""
注意:此时绘图不在用Bar对象绘图,因为有多个Bar对象,用时间线对象绘图time_line,里面包含三个Bar对象
"""
time_line.render("基础时间线柱状图")

在这里插入图片描述

  1. 自动播放设置
#自动播放设置
time_line.add_schema(
    play_interval=1000,#自动播放时间间隔,毫秒
    is_timeline_show=True,#是否显示自动播放 的时候时间线
    is_auto_play=True,#是否自动播放
    is_loop_play=True#是否循环播放
)
  1. 主题设置
    在这里插入图片描述
    在这里插入图片描述
    主题类型:
    在这里插入图片描述

6.3GDP动态柱状图绘制

  1. 列表Sort方法
    在这里插入图片描述
    在这里插入图片描述
    结果:
    在这里插入图片描述
    在这里插入图片描述
    Lambda定义匿名函数:
    在这里插入图片描述
    在这里插入图片描述
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒今天想展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值