您的位置:

利用python进行数据可视化的简单介绍

本文目录一览:

python数据可视化--可视化概述

数据可视化是python最常见的应用领域之一,数据可视化是借助图形化的手段将一组数据以图形的形式表达出来,并利用数据分析和开发工具发现其中未知信息的数据处理过程。

在学术界有一句话广为流传,A picture worths thousand words,就是一图值千言。在课堂上,我经常举的例子就是大家在刷朋友圈的时候如果看到有人转发一篇题目很吸引人的文章时,我们都会点击进去,可能前几段话会很认真地看,文章很长的时候后面就会一目十行,失去阅读的兴趣。

所以将数据、表格和文字等内容用图表的形式表达出来,既能提高读者阅读的兴趣,还能直观表达想要表达的内容。

python可视化库有很多,下面列举几个最常用的介绍一下。

matplotlib

它是python众多数据可视化库的鼻祖,也是最基础的底层数据可视化第三方库,语言风格简单、易懂,特别适合初学者入门学习。

seaborn

Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

pyecharts

pyecharts是一款将python与echarts结合的强大的数据可视化工具,生成的图表精巧,交互性良好,可轻松集成至 Flask,Sanic,Django 等主流 Web 框架,得到众多开发者的认可。

bokeh

bokeh是一个面向web浏览器的交互式可视化库,它提供了多功能图形的优雅、简洁的构造,并在大型数据集或流式数据集上提供高性能的交互性。

python这些可视化库可以便捷、高效地生成丰富多彩的图表,下面列举一些常见的图表。

柱形图

条形图

坡度图

南丁格尔玫瑰图

雷达图

词云图

散点图

等高线图

瀑布图

相关系数图

散点曲线图

直方图

箱形图

核密度估计图

折线图

面积图

日历图

饼图

圆环图

马赛克图

华夫饼图

还有地理空间型等其它图表,就不一一列举了,下节开始我们先学习matplotlib这个最常用的可视化库。

Python数据可视化利器Matplotlib从入门到高级4

2D曲线绘制是Matplotlib绘图的最基本功能,也是用得最多、最重要的绘图功能之一,本文开始详细介绍Matplotlib 2D曲线绘图功能。我的介绍主要以面向对象的编码风格为主,但会在文章的末尾附上相应的pyplot风格的源代码,供大家查阅、对比。我们先看一段代码:

代码运行效果如下:

这个绘图中我们没有作任何设置,一切交给Matplotlib处理。我们只是看到了绘制出的曲线的样子。但这与我们所想要的效果可能差异较大。所以我们还需要对图形进行一些自定义。

不管我们想生成什么样的图形,在Matplotlib当中,大致都可以总结为三步:一是构造绘图用的数据(Matplotlib推荐numpy数据,本系列介绍Matplotlib绘图,暂不涉及numpy的相关内容,留待后续有空余时吧);二是根据数据的特点选择适当的绘图方法并绘制出数据的图形;第三步则是对绘制的图形进行自定义设置或者美化以达到满足我们获得精美的输出图形的要求。

在上面的绘图中,我们仅仅做到了第二步,下面我们来进行一些自定义,而Matplotlib为此提供了非常丰富的功能。

你可能最想先尝试一下换个颜色看看曲线是什么样的,这有很多种方法。首先,我们可以在绘制图形的时候直接指定它,我们把绘图的代码改成下面的样子:

这里的 ‘r’ 是 “red”的简写,表示将曲线的颜色指定为红色。也可以写成下面的样子,这样可读性更高:

plot 返回一个 Line2D 对象的列表,我们使用一个带有“ line1, ”的元组来解包,随后使用 set_color() 代码设置line1 曲线的颜色,请注意这里设置的颜色会覆盖 plot 绘图函数当中指定的颜色。上面三段代码各自独立运行之后的效果是一样的。如下:

为了提高效率,Matplotlib模仿MATLAB支持常用颜色的单字母代码缩写。

你还可以使用不区分大小写的十六进制 RGB 或 RGBA 字符串(如:'#0f0f0f'),或者不区分大小写的 X11/CSS4 颜色名称(如:'aquamarine'),以及来自 xkcd color survey 的不区分大小写的颜色名称(如:'xkcd:sky blue')等等。更为详细的颜色规范,你可以查阅官方文档。但对于Python办公而言,掌握这些应该已经足够了。

与曲线颜色一样,线型和线宽也有多种方式来指定:

这里我们最终指定的线宽为2.0磅,绘图函数当中指定的线宽被后续指定的属性值覆盖了。而线型在这里由set_linestyle()指定,其中“--”和“-.”都是Matplotlib中支持的线型,“--”表示虚线,而“-.”则是点划线。而Matplotlib默认的线型“-”实线,除此之外,Matplotlib还支持“:”点线。

我们绘制曲线之前构造的数据点在曲线上也可以标记出来,这些标记点有不同的风格。同样可以以不同的方式来设置它:

注意第一行代码当中的“r:o”字符串,它是一种简写形式,是将颜色、线型和标记点形状在一个字符串中同时设置的方式,其中的“r”表示红色,“:”表示点线,“o”表示标记点为大圆点。只有在颜色使用单字符代码时才可以像上面这样组合起来同时表示三个属性。默认情况下,标记点的颜色与线型颜色相同,但可以单独设置与曲线不同的颜色,不仅如此,标记点的边线颜色和中间填充颜色也都可以单独设置。上面第二行代码我们就使用set_markeredgecolor('b')将标记点边线颜色设置为了蓝色。与标记点设置相关的还有set_marker(设置标记点形状)、set_markeredgewidth(设置标记点边线宽度)、set_markerfacecolor(设置标记点中间的填充色)、set_markersize (设置标记点的大小)等。下面是我整理的Matplotlib支持的所有标记点形状。

本文先介绍到此,后续进一步介绍坐标轴、图例和网格线的设置。最后附上本文pyplot风格的绘图代码:

显然这种简单绘图pyplot风格要简洁一些,还是很有优势的。

Python数据分析:可视化

本文是《数据蛙三个月强化课》的第二篇总结教程,如果想要了解 数据蛙社群 ,可以阅读 给DataFrog社群同学的学习建议 。温馨提示:如果您已经熟悉python可视化内容,大可不必再看这篇文章,或是之挑选部分文章

对于我们数据分析师来说,不仅要自己明白数据背后的含义,而且还要给老板更直观的展示数据的意义。所以,对于这项不可缺少的技能,让我们来一起学习下吧。

画图之前,我们先导入包和生成数据集

我们先看下所用的数据集

折线图是我们观察趋势常用的图形,可以看出数据随着某个变量的变化趋势,默认情况下参数 kind="line" 表示图的类型为折线图。

对于分类数据这种离散数据,需要查看数据是如何在各个类别之间分布的,这时候就可以使用柱状图。我们为每个类别画出一个柱子。此时,可以将参数 kind 设置为 bar 。

条形图就是将竖直的柱状图翻转90度得到的图形。与柱状图一样,条形图也可以有一组或多种多组数据。

水平条形图在类别名称很长的时候非常方便,因为文字是从左到右书写的,与大多数用户的阅读顺序一致,这使得我们的图形容易阅读。而柱状图在类别名称很长的时候是没有办法很好的展示的。

直方图是柱形图的特殊形式,当我们想要看数据集的分布情况时,选择直方图。直方图的变量划分至不同的范围,然后在不同的范围中统计计数。在直方图中,柱子之间的连续的,连续的柱子暗示数值上的连续。

箱线图用来展示数据集的描述统计信息,也就是[四分位数],线的上下两端表示某组数据的最大值和最小值。箱子的上下两端表示这组数据中排在前25%位置和75%位置的数值。箱中间的横线表示中位数。此时可以将参数 kind 设置为 box。

如果想要画出散点图,可以将参数 kind 设置为 scatter,同时需要指定 x 和 y。通过散点图可以探索变量之间的关系。

饼图是用面积表示一组数据的占比,此时可以将参数 kind 设置为 pie。

我们刚开始学习的同学,最基本应该明白什么数据应该用什么图形来展示,同学们来一起总结吧。

python可视化神器——pyecharts库

无意中从今日头条中看到的一篇文章,可以生成简单的图表。据说一些大数据开发们也是经常用类似的图表库,毕竟有现成的,改造下就行,谁会去自己造轮子呢。

pyecharts是什么?

pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒, pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图 。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。

安装很简单:pip install pyecharts

如需使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可,同时兼容 Python2 和 Python3 的 Jupyter Notebook 环境。所有图表均可正常显示,与浏览器一致的交互体验,简直不要太强大。

参考自pyecharts官方文档:

首先开始来绘制你的第一个图表

使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可

add() 主要方法,用于添加图表的数据和设置各种配置项

render() 默认将会在根目录下生成一个 render.html 的文件,文件用浏览器打开。

使用主题

自 0.5.2+ 起,pyecharts 支持更换主体色系

使用 pyecharts-snapshot 插件

如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用该插件请确保你的系统上已经安装了 Nodejs 环境。

安装 phantomjs $ npm install -g phantomjs-prebuilt

安装 pyecharts-snapshot $ pip install pyecharts-snapshot

调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。请注意,svg 文件需要你在初始化 bar 的时候设置 renderer='svg'。

图形绘制过程

基本上所有的图表类型都是这样绘制的:

chart_name = Type() 初始化具体类型图表。

add() 添加数据及配置项。

render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。

add() 数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。

多次显示图表

从 v0.4.0+ 开始,pyecharts 重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表。如果使是 Numpy 或者 Pandas,可以参考这个示例

当然你也可以采用更加酷炫的方式,使用 Jupyter Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的

Note: 从 v0.1.9.2 版本开始,废弃 render_notebook() 方法,现已采用更加  pythonic  的做法。直接调用本身实例就可以了。

比如这样

还有这样

如果使用的是自定义类,直接调用自定义类示例即可

图表配置

图形初始化

通用配置项

xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline)

dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)

legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。

lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)

grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

visualMap:是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)

markLinemarkPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline)

tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容

toolbox:右侧实用工具箱

图表详细

Bar(柱状图/条形图)

Bar3D(3D 柱状图)

Boxplot(箱形图)

EffectScatter(带有涟漪特效动画的散点图)

Funnel(漏斗图)

Gauge(仪表盘)

Geo(地理坐标系)

GeoLines(地理坐标系线图)

Graph(关系图)

HeatMap(热力图)

Kline/Candlestick(K线图)

Line(折线/面积图)

Line3D(3D 折线图)

Liquid(水球图)

Map(地图)

Parallel(平行坐标系)

Pie(饼图)

Polar(极坐标系)

Radar(雷达图)

Sankey(桑基图)

Scatter(散点图)

Scatter3D(3D 散点图)

ThemeRiver(主题河流图)

TreeMap(矩形树图)

WordCloud(词云图)

用户自定义

Grid 类:并行显示多张图

Overlap 类:结合不同类型图表叠加画在同张图上

Page 类:同一网页按顺序展示多图

Timeline 类:提供时间线轮播多张图

统一风格

注:pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。

地图文件被分成了三个 Python 包,分别为:

全球国家地图:

echarts-countries-pypkg

中国省级地图:

echarts-china-provinces-pypkg

中国市级地图:

echarts-china-cities-pypkg

直接使用python的pip安装

但是这里大家一定要注意,安装完地图包以后一定要重启jupyter notebook,不然是无法显示地图的。

显示如下:

总得来说,这是一个非常强大的可视化库,既可以集成在flask、Django开发中,也可以在做数据分析的时候单独使用,实在是居家旅行的必备神器啊