Python数据分析之pyecharts简介,轻松加愉快出统计图表

对于人类来说,图案和文字这两种信息表现方式,图案应该更早于文字被发明,现代考古人员时常在山洞里发现原始人刻画的一些岩画。

总的来说,图案比文字更具有视觉冲击力和表现力,所以在计算机世界里,我们通常喜欢把文字数据转化为图表数据,用于向别人更加精准有效的传达数据信息。

今天我们就来讲讲在Python中如何把数据转换为可视化的图表。

本章知识点:

pyecharts简介与安装

pyecharts创建第一个图表

pyecharts的实际数据应用

pyecharts简介与安装

说到 pyecharts 要先提到它的前身 ECharts, ECharts是由百度开源的一款使用 JavaScript 实现的开源可视化库,涵盖了各种图表、满足各类业务需求,现在已经命名为Apache ECharts(由Apache基金会接管)。

而 pyecharts 就是 ECharts 在Python中的实现,其核心原理主要是写了一个Python的库,封装了ECharts各类图表的基本操作,然后通过渲染机制,输出一个包含JS代码的HTML文件,其核心思想还是借用了ECharts的底层库,只是用Python封装了一次之后便于本地应用程序使用罢了。

安装pyecharts很简单,直接pip即可

pip install pyecharts

现在pyecharts的最新版本是 1.7.1 需要Python3.6+的环境运行。

pyecharts创建第一个图表

pyecharts的使用很简单,直接import需要用到的图表组件、设置相关参数、渲染即可。

现在让我们先用几行代码来创建一个柱状图。

以上代码会在程序当前运行目录创建一个render.html的文件,用于展示图表。

来解释一下代码:

from pyecharts.charts import Bar 用于导入Bar 这个类,Bar就是用于柱状图处理的类。

bar = Bar() 实例化Bar类,命名为bar。

bar.add_xaxis()方法用于添加柱状图的X坐标数据,它可以接收一个列表或元祖数据。

bar.add_yaxis()方法用于添加柱状图的Y坐标数据,它可以接收一个列表或元祖数据。

bar.render()用于渲染结果HTML内容,不传参数默认文件名为 render.html,也可以自定义文件名作为参数传递进去。

再来看看render.html的源码。

通过源码我们可以看他它实际上就是一堆HTML+JS代码的实现,通常情况下我们不用关心render.html的源码内容,只需要生成之后在浏览器直接展示它即可。

介绍完pyecharts的基本使用后,让我们来一点实际的例子吧。

pyecharts的实际数据应用

首先我想到了以成都市2019年的统计年鉴数据作为数据源进行一系列的图表展示。

接下来,我准备选择几组具体的数据来进行图表展示。

第一组我选择成都历年社会经济主要指标人均水平的数据。

如下图:

把地区生产总值数据提取出来,代码如下:

我们可以看到代码跟之前的例子变化不大,无非是把x,y轴的数据换了而已。

最后通过图表的展示,我们可以发现2000年后的10多年间,成都的人均GDP变化巨大。

数据太单薄?我们多加一个居民储蓄余额来看看。

柱状图的参数基本规则就是X轴只有一个,Y轴可以多个。

现在再来看看两个Y轴数据的表现。

毫不夸张的说,我的储蓄余额肯定给成都人民严重拖后腿了......

接着我们来弄一个饼图,用来分析一下人口数据,数据源如下。

最终代码和效果如下:

饼图的代码和柱状图稍微有点区别,来解释一下吧。

首先引入了一个新的库,叫做opts,该库主要用于图表参数设置的,在这里我们用c.set_global_opts(title_opts=opts.TitleOpts(title="成都全市人口男女比例")) 把图表标题设置为了成都全市人口男女比例,这个写法是pyecharts封装的不够优雅,大家记住这种写法就是了,set_global_opts() 函数可以用来设置标题、工具条、提示文本等等。

在第6行有一个zip(keys,values)的操作,zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。简单的说就是zip()函数可以用于重组多个迭代对象,重组过程中相同元素下标的数据会被重新打包组合在一起,比如将["a","b","c"]和[1,2,3]这两个列表进行zip之后,就会得到一个包含 三个元组('a', 1)、('b', 2)、('c', 3) 的对象,因为直接zip()之后得到的是一个迭代对象,而不是列表或者元组数据,所以如果我们要直接将结果作为数据使用,需要进行一次类型转换 list(zip(**args))。那么显而易见,本例子中的zip()结果就应该是 ('男性', 7322452)、('女性', 7438028)。这个数据正好是饼图需要的。

在第9行有一个 c.add("", list(data))的代码,Pie类的add()函数用于饼图绘制所需要用到的参数。至于为什么第一个参数是一个空字符串,其实因为add()函数第一个参数名为series_name,用来表示序列名称,其实在图表展示上没什么用处,所以我就给它设置为空字符串了,大家可以随意设置什么都行 。最后list(data)没什么好说的,就是把zip结果转换成列表,

在11行的render()中,我自定义了输出文件名pie.html。

其实我们也可以在一个页面上提供多个图表。可以用多个函数将所以用到图表的代码包装起来,然后统一调渲染即可。

最终效果如下:

总结

今天主要讲到了使用pyecharts产生各种图表的基础之后,还有各种酷炫的图表效果等待着我们去一一实现,例如用地图展现各地区人均消费水平,消费品种等等,我们将在Python数据分析系列的后续章节继续给大家分享相关知识。

欢迎关注我 “纸飞机编程”,获取更多有趣的Python编程信息。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200420A0M16P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券