讲本次课程前前必须先了解几个概念?
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) #设置系列属性 图表中的数据信息是否显示