说到可视化,可能第一印象想到的是Tableau。不过Python和Tableau是两种完全不同的数据可视化的工具。同时,Python有自己的一定优势,本身具备强大的可视化功能。
Python是一种计算机程序设计语言,由吉多·范罗苏姆创造,第一版发布于年。
Python提供了高效的高级数据结构,还能简单有效地面向对象编程。其解释器易于扩展,可以使用C或C++扩展新的功能和数据类型,也可用于可定制化软件中的扩展程序语言。
Python是一种编程语言,里面有很多可以调用的数据可视化的包,这些包生成的图表可以嵌入到网页上,就成了我们平时在网上看到的各种数据图。这些图后面的数据通常都是高度计算整合后的数据,数据量比较少。
超实用性的Python零基础入门到进阶视频源码淘宝¥2购买已下架通常把原始数据导入Python之后,是需要在Python里面做很多数据处理和分析的,分析完的结果才会利用这些可视化的包给呈现出来。在Python里面做分析其实主要还是前期的数据处理和准备,可视化只是最后一环,当然也不排除中途利用一些图表来辅助分析。而且做出来这些图表之后,也需要把这些图表整合来呈现一个整体的结论。
Python里面常用的可视化的包有:
MatplotlibSeabornggplotPlotlyGeoplotlib数据可视化是数据处理工作中的一个重要部分,在项目早期阶段,我们常常需要做很多数据分析来深入了解数据。创建数据可视化能帮我们更清楚和容易的理解数据集,特别是高维度数据集。
Matplotlib是一个很受欢迎的Python程序库,用它可以很容易的创建数据可视化。不过,每次开展新项目时我们都要设置数据、参数、图表和绘图等,这会非常麻烦和混乱。
我们会讨论5种数字可视化方式,用Python的Matplotlib程序库为其写一些快速又容易的函数。
散点图
散点图很适合显示两个变量之间的关系,因为你可以直接看到数据的初始分布。你也可以将数据群组进行彩色编码来查看不同数据群组之间的关系,如下面第一幅图所示。想要可视化三个变量之间的关系?没问题!只需利用其它参数,比如点尺寸,对第三个变量进行编码。
现在讲讲代码部分。我们首先用命令别名“plt”导入Matplotlib的pyplot。我们调用plt.subplots()来创建一个新的图表。我们向函数输入X轴和Y轴数据,然后将它们传入ax.scatter()中来绘出散点图。我们同样也可以设置点尺寸、点颜色和阿尔法透明处理。你甚至可以设置Y轴来获得对数尺度,然后为图形详细设置名称和轴标签。可以看到用函数点对点地创建散点图非常容易!
importmatplotlib.pyplotaspltimportnumpyasnpdefscatterplot(x_data,y_data,x_label=,y_label=,title=,color=r,yscale_log=False):#Createtheplotobject_,ax=plt.subplots()#Plotthedata,setthesize(s),colorandtransparency(alpha)#ofthepointsax.scatter(x_data,y_data,s=10,color=color,alpha=0.75)ifyscale_log==True:ax.set_yscale(log)#Labeltheaxesandprovideatitleax.set_title(title)ax.set_xlabel(x_label)ax.set_ylabel(y_label)
线条图
线条图用起来非常方便,因为你可以清楚得看到两个变量之间的巨大差异,也就是说它们有很高的协方差。我们可以清晰得看到所有的专业在各个时间段内所占百分比有着巨大差异。如果将它们绘成散点图,结果会非常混乱,这样就很难理解数据。而线条图很适合这种情况,因为能让我们快速总结出两个变量之间的协方差(百分比和时间点)。这里我们仍可以通过彩色编码进行分组。
下面是绘制线条图的代码,和上面绘制散点图的代码比较像,只是在变量上略微有些变动:
deflineplot(x_data,y_data,x_label=,y_label=,title=):#Createtheplotobject_,ax=plt.subplots()#Plotthebestfitline,setthelinewidth(lw),colorand#transparency(alpha)ofthelineax.plot(x_data,y_data,lw=2,color=#caf,alpha=1)#Labeltheaxesandprovideatitleax.set_title(title)ax.set_xlabel(x_label)ax.set_ylabel(y_label)
直方图
直方图非常有助于我们查看(或发现)数据点的分布。使用条形(不用其它方式,比如散点)能让我们清晰得看到每个bin的频率之间的相对差异,利用bin(也就是数值离散化)能帮助我们看清“数据全局”,而如果我们没有用bin将所有数据点进行离散处理,那么可视化后的数据中会存在很多噪声,后续的数据处理工作会无从下手。
利用Matplotlib绘制直方图的代码如下所示,这里要注意两个参数。第一个,参数n_bins决定我们在直方图中使用多少个bin,而bin的数目越多,我们获取的数据信息质量也就越好,但也有可能带来噪声,从而让我们无法纵览全局。第二个,参数cumulative是一个布尔值,能让我们决定直方图是否是累计直方图,这基本上是在选择概率密度函数(PDF)还是累积密度函数(CDF)。
defhistogram(data,n_bins,cumulative=False,x_label=,y_label=,title=):_,ax=plt.subplots()ax.hist(data,n_bins=n_bins,cumulative=cumulative,color=#caf)ax.set_ylabel(y_label)ax.set_xlabel(x_label)ax.set_title(title)
假如我们想比较数据中两个变量的分布状况。可能有人会想,我们得做两个独立的直方图,将它们放在一起进行比较。但是还有个更好的方式:我们可以用不同的透明度将两个直方图相互重叠。
在将直方图相互重叠时,需要在代码中做些设置。首先我们设置水平距离以适应变量分布。根据设定的范围和理想数目的bin,我们就可以计算每个bin的宽度。最后,我们可以在同一个图中绘出这两个直方图,其中一个有着略高的透明度。
#Overlay2histogramsto