json是带有特定格式的字符串
功能:负责不同编程语言中的数据传递和交互
json数据的格式{"name":"admin","age":18}
也可以是[{"name":"admin","age":18},{"name":"admin","age":19},{"name":"admin","age":20}]
python数据与json数据相互转换
注:将第三行data改为(data,ensure_ascii=False)可以将中文显示出来 如果是true中文将转换为unicode的字符
pyecharts模块介绍
可以做出数据可视化效果图
如何安装pyecharts
使用pip命令可快速安装pyecharts模块
先打开windows键然后搜索cmd打开命令提示符
查看官方示例
打开官方画廊:
https://gallery.pyecharts.org/#/README
pyecharts入门
1.导包,导入line功能构建折线图对象
2.得到折线图对象
3.添加x轴数据
4.添加y轴数据
5.生成图表
set_global_opts方法
全局配置选项可以通过set_global_opts方法来进行配置
上边是一个基础的折线图,但是不够好看,通过全局配置项把它设置一下
当得到一个折线图对象的时候,就可以调用一个set_global_opts的方法去设置相关的全局配置项了比如说标题的配置等等现在有一个基础折线图,但是不够好看我们通过全局配置项来把它设置一下。我们需要传一个标题相关的功能对象还需要去导包写from在这个pyecharts包里面有个叫options这都是它的一系列可配置的选项,所有的选项都在options里面,在options里面来import一个叫作TitleOpts这个就是标题的控制选项
数据准备
打开浏览器进入ab173网站上面有json相关的选择第二个叫json视图在这个网页把json粘贴过来然后点击格式化,格式就清爽了但有点长。在左边点击视图按钮你点击你就发现它可以缩放了
那首先这是我们整体这个json数据打开之后它里面就是一个典型的字典,他的符号是大括号这个字典里面有status这个key它的value就是0以及msg这个key它的value就是这个success,在这里面他嵌套了一个key叫做data那data的value就是一个数组,这个数组里面他还是有数据的,他有个符号0只有一个数据这个数据就是一个字典了,那你可以看到它嵌套的层次非常多拿到这个字典之后,打开它里面有两个key一个key的name叫美国表示是美国的数据还有个叫trend的表示的是趋势就是我们的具体的数据,再打开这个字典里面又嵌套了字典,在这个字典里面首先有叫updataDate叫更新的日期这里面是日期相关的内容,那我们所需要的日期就在这里
把日期减小之后和他同级的有个叫list,这个list打开之后里面是一个数组也就是列表,你打开里面有四个元素0号元素表示的是确诊,1号元素表示的是治愈,2号元素表示的是死亡等等
想要找确诊所以找到0号元素在里面找到data我们所需要的数据就在这里面了,这个0就代表我们这个update也是时间里面的序号0
2月22号对应的数据是34
所以说他们是有对应关系的,这个城市关系确实是比较复杂但可以说我们可以通过这些第三方网站,可以简单的把他的城市给它梳理出来你可以再回到这边其实你通过这边看也可以你会发现首先我们最顶层是一个大括号那就说明他是一个字典那既然是一个字典的话这是key,这是value就我们所说的键值那这是个key这是value,这个value是列表所以它嵌套一个列表,那这个列表里面首先这是它的0号元素,那0号元素又是个字典的话,字典里面key name然后美国value以及这个叫trend趋势我们要取到这个key,然后取到这里面又嵌套个字典那这个字典里面又可以取到key得到他的日期相关的然后在往下我们就可以通过同级的另外一个key,获得一个叫做list的key还是非常长的 ,通过这个list的key可以得到一个list,那这个list也就是我们的列表,这个列表又有四个元素我们0号元素就是确诊,所以0号元素又是个字典,取到字典之后取到name这个key你就知道是确诊了,取到data这个key就取到一个列表
从D盘里去取数据,有了数据之后我们要对他进行基础的处理,处理数据可以通过前面学习的open函数来去读取数据,把数据路径写一下哦
通过f_us.read的方法就可以读到他全部内容了,我们可以得到us_data这样我们将得到了美国的全部内容,在文件中我们需要把开头和结尾不规范的去掉,把要去掉的内容复制一下回到代码中通过字符串的replace来把不要的内容替换成空字符串,替换完成之后我们再把他的结果在赋值会us_data,这样就把美国开头这一部分替换掉,在赋值回去相当于把它更新了,同样开头处理完就处理一下结尾如果还用replace命中这个括号和分号的话那有可能替换多了所以说对于结尾这个
不太确定的话我们可以不使用replace,可以通过序列的切片,我们要从头开始切,然后到尾结束,那尾巴的结束怎么定义,我们可以用反向下标-1表示倒数第一个-2表示倒数第二个,那就是说我们到倒数第二个结束,那么我们的尾巴是不包括倒数第二个自身,那么我们就把它最后两个字符去掉了。这样我们把us_data又更新了,这样开头结尾我们都处理好了,现在我们的us_data就是一个可用的json字符串了,我们按照前面学习的包叫做json包,import这个叫json导入之后可以通过json里面提供的方法把它转化为python的字典对象
运行起来这里的层级还是非常非常深,回到浏览器我们根据这个层级关系,我们先一点一点获取,先不要获取特别深
获取trend趋势首先整体是他是一个字典,那么字典中是有key的,我们data key取到了一个列表,从层级来看从字典里面取到第一个key data
取data得到列表我们试一下us_dict我们取一下data,这里取到了一个列表,取到这个列表里面只有一个元素,所以我们就取0号元素就可以了,0号元素里面又是个字典
再取trend这个元素就可以取完了,将代码运行将得到的数据全部复制回到浏览器或者再开个新网页ab173打开json视图,我们粘贴格式化回到这个视图里面
清爽很多一份是日期相关的取updateDate这个key就能取到里面的对应的列表的日期数据,我们想取到313所以我们需要进行切片[ :314]这是x轴,再看一下y轴数据它来自这个trend的里面的一个叫list的,那我们通过它取到list的key这里面的数据内容是一个列表,对于我们来说这个列表有四个元素我们只需要0号就可以所以说我们取list key再取个0号拿到确诊数据,再从确诊数据里面选择这个data key
通过这三步那我们的数据就取出来了
用pyecharts完成疫情折线图
结合上文
将他变量改一个名改成美国专属数据
在添加日本,印度的数据,经过与美国一样的处理
要构建图表的话就要在文件开头进行导包
下一步回到代码后面先构建一个叫Line的图表对象
然后添加x轴数据,咱构建一份就可以了因为这仨个国家公用一个x轴就可以了,所以我们只用一个国家的数据就行
下一步添加y轴数据这个就不能公用了
调用render方法生成图表看一看,之后千万不要忘记把我们几个文件来关闭掉
可以进行一些简单的修改,可以给它添加一些标题,或者修改位置。来给他设置一下简单的全局1选项在render之前设置全局选项调用line等等在标题设置前要给他导包在最上面
再回到下面 写
先拿title设置名字然后用pos_left来设置它的位置,用pos_bottom设置上下位置1%是距离底部1%。
在这个图中看起来好乱这些数字都混合在一起,感觉不对劲,可以去设置一下我们系列的属性,通过对系列的属性进行设置我们可以控制它的一个基础行为,我们系列就是y轴现在y轴设置了3个国家,相当于我们y轴有3个系列,我们可以针对每个系列去设置一下,label表示图例的设置,在设置时不要忘了导包