python数据可视化折线图

讲本次课程前前必须先了解几个概念?

JSON 

python切片操作

什么是json?

JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据

JSON本质上是一个带有特定格式的字符串

主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。

各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型, 而其它语言可能没有对应的字典。

为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。如下图,以Python和C语言互传数据为例:

 

python数据和json数据的相互转换:

import json #导入json 模块
data   = [{"name":"朱自清","age":22},{"name":"沈从文","age":28}]
#通过json.dumps() 方法将python数据转化为json 数据
data = json.dumps(data) json 模块中的 dumps() 方法
print(type(data))
#通过json.loads() 方法将json数据转化为python数据
data = json.loads(data)
print(type(data))

 

执行结果:(JSON本质上是一个带有特定格式的字符串

 

 python 切片操作如何使用?

什么是python的切片操作?在python语言中切片操作是对序列对象的一种高级索引用法,而序列是一种内容连续、有序,可通过下标索引到具体元素的一类数据容器,列表(list)、元组tuple、字符串(str),均可以可以视为序列。切片操作的重要特性是指可以,以特定的方式在一定的范围内索引到自己想要的数据,它不仅是某个数据,而是指一个范围。

只有能进行下标索引的数据类型才可进行切片

语法:序列[起始下标:结束下标:步长]   # 提示点:切片不包含结束下标的元素,步长是指元素之间跨过的间隔。

 list= [1,2,3,5,7,8,12,15]

例如:list[1:7:2]

释义:获取元素下标从1到元素下标为6且元素之间间隔为2的元素

结果是: 2 ,5 ,8

反向索引: 例如list[7:1:-2]    当步长为负数时表示反向索引,获取的元素之间的间隔为步长的绝对值

结果是:15 ,8 ,5    

list[:-1]  从下标0到下标-1之前的数

结果是:1 ,2 ,3,5,7,8,12

步入正式课题

如果想要实现数据可视化效果图, 可以借助pyecharts模块来完成,模块是包含诸多功能的文件夹,如果我们需要实现爬虫休眠效果的功能,我们可以调用time 模块的.sleep()功能。

如果我们想要实现将清洗后的数据通过图标的形式展示,我们一般要经过以下五个步骤:

 步骤一:导入需要的模块

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

步骤二:获取需要制作的数据

f_us = open(r"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] #[:]从头到尾步长为1,[:-2] 从从头到尾取,不过取到倒数第二,但不包括倒数第二
#json 转 python 字典
us_dict = json.loads(us_data)

步骤四:获取数据元素位置 

#获取trend key
us_trend_data = us_dict['data'][0]['trend']

 

#获取日期数据,用x轴,获取到2020年12月31,key是[:314]
us_x_data = us_trend_data['updateDate'][:314]
#获取确认数据(数据信息感染人数),用于y轴取到2020年
us_y_data = us_trend_data['list'][0]['data'][:314]

 

这里要讲到层次关系:需要用到一个软件 (ab173) ab173 是一个帮助我们理清数据搁置位置的层次结构网页,通过复制数据json形式并且以视图的方式展现给开发者,这种视图的展现形式,是数据字典套着列表,列表又套着字典 以键值对{key:value}方式展现 比较难以观察。

步骤五: 给图表添加数据

#生成图表
line = Line()
#添加 x 轴数据
line.add_xaxis(us_x_data) 
#添加y轴数据
line.add_yaxis("美国确诊人数",us_y_data, label_opts=LabelOpts(is_show = False))

步骤六:设置全局选项 

无论是折线图,还是饼状图,基本的配置信息是要有的,例如标题,工具箱,图例

line.set_global_opts(
    #标题设置
    title_opts = TitleOpts(title = "2020年美日印三国确诊人数对比折线图", pos_left = "center",pos_bottom ="1%"  ),
    toolbox_opts = ToolboxOpts(is_show = True) #工具箱设置
)

步骤七:生成图表

#调用render方法,生成图表
line.render()

关闭文件对象:

f_us.close()
f_in.close()
f_jp.close()

效果展示:

总结:

方法:

title_opts = TitleOpts #实现标题功能
toolbox_opts = ToolboxOpts(is_show = True) #实现开启工具箱功能label_opts=LabelOpts(is_show = False) #设置系列属性 图表中的数据信息是否显示
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值