《Python大数据基础与实战(第10章-数据可视化)课件.pptx》由会员分享,可在线阅读,更多相关《Python大数据基础与实战(第10章-数据可视化)课件.pptx(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Python大数据基础与实战Python大数据基础与实战配套课件Python大数据基础与实战Python大数据基础与实战 第十章 数据可视化技术Python大数据基础与实战目录 10.1 pyplot基本绘图流程10.2 基于函数的可视化操作10.3 基于对象的可视化技术10.4 配置文件10.5 中文显示10.6 分类图10.7 seaborn可视化Python大数据基础与实战10.1pyplot绘图基本流程Python大数据基础与实战10.1 pyplot绘图基本流程 matplotlib是一套基于NumPy的绘图工具包,是Python中最著名的绘图包之一。matplotlib十分适合交互
2、式绘制图表,可以很方便地设计和输出二维和三维的图表。matplotlib工具包提供了pyplot模块完成对图形的绘制,大部分的pyplot图形绘制都遵循一个流程,使用这个流程可以完成大部分图形的绘制。Python大数据基础与实战10.1 pyplot绘图基本流程Python大数据基础与实战 Matplotlib提出了Object Container概念,它有Figure、Axes、Axis和Tick四种类型的对象容器。Figure负责图像大小、位置等操作。Axes负责坐标系的位置、绘图等操作。Axis负责坐标轴的操作。Tick负责刻度的相关操作。Figure包含Axes、Axes包含Axis,
3、Axis包含Tick。Python大数据基础与实战10.2基于函数的可视化操作Python大数据基础与实战10.2 基于函数的可视化操作 为了方便快速绘图,matplotlib通过pyplot模块提供了一套和matlab类似的绘图函数,只需要调用pyplot模块所提供的函数,就可以实现快速绘图及设置图表的各种细节。#使用pyplot之前首先要导入所在的模块 from matplotlib import pyplot as plt import matplotlib.pyplot as plt#将要显示的图片嵌入到Jupyter Notebook中%matplotlib inline Pytho
4、n大数据基础与实战10.2 基于函数的可视化操作1.常用绘图函数1)创建图表和创建子图 绘图前可以先创建一个空白的图表,并且可以选择是否将整个图表划分为多个子图,以方便在同一幅图上绘制多个图形。当只需要绘制一幅简单的图形时,这部分内容可以省略。figure()该函数创建一个图表对象,并且成为当前的Figure对象。也可以不创建 Figure对象而直接调用plot()进行绘图,这时matplotlib会自动创建一个 Figure对象。Python大数据基础与实战subplot()可以将一个图表划分成多个子图进行绘制,该函数用来设置子图,第1个参数 是行数,第2个参数是列数,第3个参数是子图的编号
5、 subplots()该函数返回Figure对象和子图对应的Axes对象数组,Axes是可以进行绘图操作 的对象10.2 基于函数的可视化操作Python大数据基础与实战2)添加图表内容添加标题、添加坐标轴名称、绘制图形、添加图例等步骤是并列的,没有先后顺序。可以先绘制图形,也可以先添加各种标签。但是添加图例一定要在绘制图形之后。plot()创建figure对象之后,接下来调用plot()在当前的figure对象中绘图。plot()的前两个参数是表示 X、Y 轴数据的对象,后面参数是一个格式化字符串,由颜色字符、风格字符和标记字符组成10.2 基于函数的可视化操作Python大数据基础与实战t
6、itle()、text()在当前图表中添加标题、文本注释信息legend()设置图例xlabel()、ylabel()添加X轴和Y轴名称xlim()、ylim()设置当前图表的X轴和Y轴取值范围xticks()、yticks()指定X轴和Y轴刻度的数目与取值10.2 基于函数的可视化操作Python大数据基础与实战3)保存与显示图形savefig()保存绘制的图形到文件中,可以指定图形的分辨率、边缘的颜色等参数show()显示图形10.2 基于函数的可视化操作Python大数据基础与实战10.2 基于函数的可视化操作%matplotlib inline from matplotlib impo
7、rt pyplot as plt#导入pyplot库import numpy as np#导入科学计算库numpy#设置中文字体font=family:KaiTi,#字库:楷体 weight:bold,#加粗 size:16#字号plt.rc(font,*font)#设置配置参数plt.rc(axes,unicode_minus=False)#处理负号显示问题Python大数据基础与实战#创建绘图数据x=np.arange(0.0,2.0,0.01)#x轴数据0.0,2.0),间隔0.01y=1+np.sin(2*np.pi*x)#y轴数据1+sin(2x)fig=plt.figure(fig
8、size=(20,8)#设置图片宽度20英寸,高度8英寸plt.plot(x,y,r-)#绘图参数设置plt.xlabel(时间/s)#设置x轴标签plt.ylabel(电压/mv)#设置y周标签plt.title(第一个图形示例)#设置图片的标题t=r$1+sin(2pix)$#使用LaText语法描绘数学公式plt.legend(t,loc=upper left,frameon=True)#设置图例,位置左上,带边框10.2 基于函数的可视化操作Python大数据基础与实战10.2 基于函数的可视化操作#savefig()函数保存图表到文件,它的参数可以指定要保存的文件名、分辨率、去除四周
9、空白plt.savefig(rd:test2.png,dpi=1000,bbox_inches=tight,pad_inches=0)plt.show()#显示图形Python大数据基础与实战10.2 基于函数的可视化操作2.绘制多个子图一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域(子图)。可以用subplot()函数快速绘制包含多个子图的图表。subplot(nrows,ncols,index,*kwargs)整个绘图区域被等分为nrows行和ncols列,然后按照从左到右、从上到下的顺序对每个区域进行编号,左上区域的编号为1。in
10、dex参数指定创建Axes对象所在的区域。如果3个参数的值都小于10,那么就可以把它们缩写成一个整数。如223表示第2行第1列的子图。Python大数据基础与实战plt.figure(1)#创建图表1 plt.figure(2)#创建图表2 ax1=plt.subplot(211)#在图表2中创建子图1 ax2=plt.subplot(212)#在图表2中创建子图2 x=np.linspace(0,3,100)#生成X轴数据plt.figure(1)for i in range(5):plt.plot(x,np.exp(i*x/3),label=r$e%dx$%i)#在图表1中绘图 plt.l
11、egend()#显示图例 10.2 基于函数的可视化操作Python大数据基础与实战plt.sca(ax1)#选择图表2的子图1 plt.plot(x,i+x,label=r%d+x%i)#在图表2的子图1中绘图plt.legend()plt.sca(ax2)#选择图表2的子图2plt.plot(x,np.cos(i*x),label=rcos%dx%i)#在图表2的子图2中绘图 plt.legend()plt.figure(1)plt.savefig(d:/test1.png)#图表1存盘plt.figure(2)plt.show()10.2 基于函数的可视化操作Python大数据基础与实战
12、10.2 基于函数的可视化操作Python大数据基础与实战10.3基于对象的可视化操作Python大数据基础与实战10.3 基于对象的可视化操作 为了将面向对象的绘图库封装成使用函数的调用接口,pyplot模块内部保存了当前图表以及当前子图等信息。当前的图表和子图可以通过gcf()和gca()获得,其中gcf()获得表示图表的Figure对象,gca()获得表示子图的Axes对象。使用matplotlib绘制的图表每个组成部分都和一个对象对应,可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置方法setp()来设置它们的属性值,也可以通过属性获取方法get_*()或
13、者pyplot模块的属性获取方法getp()来获取对象的属性,或者直接获取对象的属性。Python大数据基础与实战plt.rcParamsfont.family=KaiTi#使用楷体字库plt.rcParamsfont.size=16#设置字体大小x=np.arange(0,5,0.1)#生成X轴数据lines=plt.plot(x,x*2,x,x*3)#plot()返回一个元素类型为Line2D的列表lines0.set_label(r$x2$)#设置第1个图表的图示x2lines0._color=r#设置第1个图表对象的颜色为红色lines0.set_linestyle(-)#设置第1个图
14、表的线型为虚线plt.setp(lines1,color=g,label=r$x3$)#设置第2个图表的颜色和图示plt.setp(lines,linewidth=3.0)#两个图表线宽统一设置为3print(lines1._label)#直接获取第2个图表对象的label属性10.3 基于对象的可视化操作Python大数据基础与实战%matplotlib inlineimport numpy as npfrom matplotlib import pyplot as plt#X轴和Y轴数据x=np.linspace(-1.5*np.pi,2*np.pi,256,endpoint=True)y
15、=np.cos(x)#创建figure对象fig=plt.figure(figsize=(10,4),dpi=1000)#figure对象获取axes对象ax1=fig.add_subplot(211)#axes对象绘图ax1.plot(x,y,color=b,linewidth=2.5,linestyle=-,label=cosine)10.3 基于对象的可视化操作Python大数据基础与实战#axes对象调整坐标轴ax1.spinesright.set_color(none)ax1.spinestop.set_color(none)ax1.spinesbottom.set_position
16、(data,0)ax1.spinesleft.set_position(data,0)#axes对象获取axis对象x_axis=ax1.get_xaxis()y_axis=ax1.get_yaxis()#axis对象设置数据轴宽度、修改刻度、刻度标签x_axis.set_data_interval(x.min()*1.1,x.max()*1.1)x_axis.set_ticks(-1.5*np.pi,-np.pi,-np.pi/2.0,0,np.pi/2.0,np.pi,1.5*np.pi,2*np.pi)x_axis.set_ticklabels(r$-3/2pi$,r$-pi$,r$-p
17、i/2$,r$0$,r$+pi/2$,r$+pi$,r$+3/2pi$,r$+2pi$)y_axis.set_data_interval(y.min()*1.1,y.max()*1.1)y_axis.set_ticks(-1,+1)y_axis.set_ticklabels(r$-1$,r$+1$)10.3 基于对象的可视化操作Python大数据基础与实战#axis对象设置刻度位置x_axis.set_ticks_position(bottom)y_axis.set_ticks_position(left)#figure对象添加axes对象ax2=fig.add_subplot(212)t=2
18、*np.pi/3ax2.plot(t,t,0,0,np.sin(t),0,color=r,linewidth=1.5,linestyle=-,label=axis 2)ax1.legend(loc=upper left,frameon=False)ax2.legend(loc=upper left,frameon=False)fig.show()10.3 基于对象的可视化操作Python大数据基础与实战10.4配置文件Python大数据基础与实战matplotlibrc配置文件是一个文本文件,它实际上是一个字典。配置文件的读入可以使用rc_params()函数,它返回一个配置字典。matplo
19、tlib模块在载入时会自动调用rc_params(),并把得到的配置保存到rcParams字典变量中。matplotlib使用rcParams字典中的配置进行绘图,用户可以直接修改此字典中的配置。10.4 配置文件Python大数据基础与实战10.5中文显示Python大数据基础与实战matplotlib默认配置文件中使用的字体无法正确显示中文字符,为了让图表能正确显示中文字符,有3种解决方案:代码中直接指定字体修改配置字典变量rcParams中键对应的值修改配置文件如果要使用windows中Fonts目录下众多的复合字体文件(*.ttc),可以直接创建字体文件的FontsProperties
20、对象,并使用此对象指定图表中各种文字的字体。from matplotlib.font_manager import FontProperties font=FontProperties(fname=rc:windowsfontssimsun.ttc,size=16)10.5 中文显示Python大数据基础与实战10.6分类图Python大数据基础与实战绘制对数坐标图的函数主要有3个,分别是:semilogx()、semilogy()和loglog(),它们分别绘制X轴、Y轴以及XY轴为对数坐标的图表。10.6.1 对数坐标图Python大数据基础与实战创建极坐标图表可以通过subplot()函
21、数来完成,设置该函数的关键值参数poplar=True即可。使用rgrids()函数设置同心圆栅格的半径大小和文字标注角度,使用thetagrids()设置放射线栅格的角度。plt.subplot(121,polar=True)#创建极坐标子图1plt.plot(theta,theta/6,linewidth=2.0)plt.plot(3*theta,theta/3,-,linewidth=2.0)plt.rgrids(np.arange(0.5,2,0.5),angle=45)plt.thetagrids(0,60)10.6.2 极坐标图Python大数据基础与实战直方图是为了直观显示数据的
22、分布情况,直方图的横轴表示数据,纵轴表示数据出现的次数。使用hist()函数可以绘制直方图,它的第1个参数表示数据,不能省略,其它参数为关键字参数,其中bins表示直方图的柱子数,normed表示是否归一化,alpha表示透明度,histtype设置直方图的类型,facecolor设置颜色等。10.6.3 直方图Python大数据基础与实战from matplotlib import pyplot as pltdata1=np.random.randn(100000)#生成100000个(0,1)符合正态分布的样本data2=np.random.rand(100000)#生成100000个(0
23、,1)符合均匀分布的样本plt.hist(data1,100,alpha=0.7,normed=True)plt.hist(data2,100,alpha=0.4,normed=True)plt.grid(True,ls=-)#绘制网格plt.legend(Normal,Uniform)#设置图例plt.show()10.6.3 直方图Python大数据基础与实战10.6.3 直方图Python大数据基础与实战柱状图用每根柱子的长度表示值的大小,它们通常用来比较两组或多组值。柱状图主要用于查看各分组数据的数量分布,以及各个分组数据之间的数量比较。使用bar()函数可以绘制垂直柱状图,它的第1个
24、参数为每根柱子左边缘的横坐标,第2个参数为每根柱子的高度,第三个参数指定所有柱子的宽度,默认是0.8。grid()函数用于绘制网格,通过对参数的个性化设置,可以绘制出个性化的网格。10.6.4 柱状图Python大数据基础与实战data1=107,115,145,212,280,338,350,358,368data2=190,260,310,380,410,500,510,580,600 years=np.arange(2000,2009,1)#创建数组plt.figure(figsize=(10,6)plt.bar(years,data2,label=大学录取人数,color=b,widt
25、h=0.3,alpha=0.3)for x,y in zip(years,data2):plt.text(x,y,y,ha=center,va=bottom)plt.bar(years+0.3,data1,label=大学毕业人数,color=g,width=0.3,alpha=0.6)plt.grid(color=r,linestyle=-,linewidth=1,axis=y,alpha=0.4)for x,z in zip(years+0.3,data1):plt.text(x,z,z,ha=center,va=bottom)plt.xlabel(年度)plt.ylabel(大学录取/毕
26、业人数(万))plt.title(中国大学录取/毕业人数数据(2000年-2008年))10.6.4 柱状图Python大数据基础与实战10.6.4 柱状图Python大数据基础与实战10.6.5 饼状图 饼状图是将各项的大小与各项总和的比例显示在一张“饼”上,以“饼”的大小来确定每一项的占比。饼状图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显示方式比较直观。pyplot中绘制饼状图使用函数pie()。pie()中参数startangel设置开始角度,autopct设置数值显示方式,radius设置半径,默认为1Python大数据基础与实战
27、fig=plt.figure(figsize=(8,3)ax1=fig.add_subplot(1,2,1)#定义子图1plt.sca(ax1)#选择子图1plt.pie(data1,explode=explode1,labels=label1,autopct=%1.1f%,startangle=45,radius=0.8)ax2=fig.add_subplot(1,2,2)#定义子图2plt.sca(ax2)#选择子图2plt.pie(data2,explode=explode2,labels=label2,autopct=%1.1f%,startangle=90)plt.show()10.
28、6.5 饼状图Python大数据基础与实战10.6.5 饼状图Python大数据基础与实战10.6.6 散点图 散点图可以用来呈现数据点的分布,表现两个元素之间的相关性。scatter()函数可以用来绘制散点图,传入X和Y轴坐标数据即可。x=np.random.random(50)#产生50个0到1之间的随机数 y=x+np.random.random(50)/8#模拟X和Y之间的相关性 plt.scatter(x,y,s=x*300,c=r,marker=*)#参数s指定大小,c设置颜色,marker设置形状 plt.show()Python大数据基础与实战10.6.7 箱线图 箱线图可以观
29、察最小值、下四分位数、中位数、上四分位数和最大值,它可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别是可以对几个样本进行比较。pyplot中绘制箱线图的函数是boxplot()。boxplot()函数中参数notch设置中间箱体是否有缺口,labels指定箱线图的标签,meanline表示是否显示均值线 data1=107,115,145,212,280,338,350,358,368 data2=900,260,310,380,410,500,510,580,600 label=毕业人数,录取人数 plt.boxplot(data1,data2),notch=True,label
30、s=label,meanline=True)Python大数据基础与实战10.6.8 三维绘图 mpl_toolkits.mplot3d模块在matplotlib基础上提供了三维绘图的功能,由于它使用matplotlib的二维绘图功能来实现三维图形的绘制工作,因此绘图速度有限,不适合用于大规模的三维绘图。如果读者需要更加复杂的三维数据可视化功能,可以使用Mayavi。Python大数据基础与实战10.7seaborn可视化Python大数据基础与实战10.7.1 seaborn样式seaborn预先设计好了5种主题样式:darkgrid、dark、whitegrid、white和ticks,默
31、认使用darkgrid主题样式。searborn库的set()方法可以设置主题、调色板等多个样式。import seaborn as sns#导入seaborn扩展库sns.set(style=whitegrid,palette=muted,color_codes=True)#set()中style参数设置主题,palette参数设置调色板,color_codes参数设置颜色代码Python大数据基础与实战10.7.2 分类图 1.散点图通过seaborn库的stripplot()函数可以绘制散点图,当散点图中数据较多时,很多散点会被覆盖,可以通过加入抖动(jitter=True)来解决。如果
32、要看清每个数据点,可以使用swarmplot()函数,该函数的参数x和y表示列名,hue参数表示颜色分类Python大数据基础与实战10.7.2 分类图1.散点图sns.set(style=ticks)tips=sns.load_dataset(tips)#使用seaborn自带tips数据集fig,axes=plt.subplots(1,2,figsize=(8,4)sns.stripplot(x=day,y=total_bill,ax=axes0,data=tips,hue=smoker)#当数据点多时,出现覆盖情况sns.swarmplot(x=day,y=total_bill,ax=a
33、xes1,data=tips)#避免出现覆盖情况sns.despine()#去掉边框Python大数据基础与实战2.箱线图在seaborn中使用boxplot()函数来绘制箱线图。sns.set(style=ticks)sns.boxplot(x=day,y=total_bill,hue=smoker,orient=v,palette=Set3,data=tips)#参数orient设置朝向,取“v”时沿Y轴方向绘图,取“h”时沿X轴方向绘图#x、y参数表示要绘制的列,hue参数表示分类变量sns.despine()plt.savefig(rd:test.png,dpi=1000,bbox_i
34、nches=tight,pad_inches=0)10.7.2 分类图Python大数据基础与实战3.琴形图 琴形图结合了箱线图与核密度估计图,在seaborn中,使用violinplot()函数来绘制琴形图。fig,axes=plt.subplots(1,2,figsize=(13,6)#创建多子图,返回fig和axes对象#split参数可以将分类数据进行切分,这样两边的颜色就代表了不同的类别sns.violinplot(x=day,y=total_bill,hue=sex,data=tips,split=True,ax=axes0)#hue参数指定分类依据,inner参数对每个数据进行可
35、视化sns.violinplot(x=day,y=total_bill,hue=sex,data=tips,inner=stick,ax=axes1)#琴形图可以和分类函数相互结合,实现更加强大的可视化效果sns.swarmplot(x=day,y=total_bill,data=tips,color=R,alpha=.6,ax=axes0)Python大数据基础与实战4.柱状图 seaborn中使用barplot()函数来绘制柱状图,默认情况下使用该函数绘制的y轴是变量分布的平均值,并且在每个柱状条上绘制误差线。sns.barplot(x=day,y=tip,hue=sex,data=tip
36、s)Python大数据基础与实战 5.计数图 柱状图中,常常绘制类别的计数柱状图。在seaborn中,使用countplot()函数就可以完成。sns.countplot(x=day,data=tips,palette=Set2)Python大数据基础与实战 6.分组关系图 seaborn中,使用factorplot()函数完成分组统计功能。sns.factorplot(x=size,col=sex,data=tips,col_wrap=2,kind=count,size=4,aspect=.9)#参数col指定分组依据,参数col_wrap指定每行最多平铺数,kind指定绘图类型,size参
37、数指定每个面的高度,aspect参数指定纵横比,每个面的宽度由sizeaspect共同确定。Python大数据基础与实战 7.单变量分布图 单变量分布图的绘制使用seaborn中的distplot()函数,默认情况下绘制一个直方图,并嵌套一个与之对应的密度图。fig,axes=plt.subplots(2,2,figsize=(10,6)#多子图方式绘图sns.distplot(tipstip,ax=axes00)#默认方式绘制一个直方图和密度图sns.distplot(tipstip,kde=False,ax=axes01)#kde为False时不绘制密度图sns.distplot(tips
38、tip,hist=False,ax=axes10)#hist为False时不绘制直方图sns.distplot(tipstip,rug=True,ax=axes11)#rug为True时为每个样本点添加小细线Python大数据基础与实战 8.多变量分布图 为了绘制两个变量的分布关系,常常使用散点图的方法。在seaborn中,使用jointplot()函数绘制一个多面板图,不仅可以显示两个变量的关系,还可以显示每个单变量的分布关系。sns.jointplot(x=tip,y=total_bill,data=tips,kind=reg,color=b)#参数x、y表示数据集中的列名,只能是数字。#
39、参数data表示数据集,参数kind表示分类图的类型#kind取kde表示密度图,kind取reg表示回归图,kind默认取scatter表示点散图Python大数据基础与实战 在数据集中,如果要体现多个变量的分布情况,就需要成对的二元分布图。在seaborn中,可以使用pairplot()函数来完成二元分布图,该函数会创建一个轴矩阵,以此显示每两列的关系,在主对角线上为单变量的分布情况。pairplot()只对数值型的列有效,其中参数diag_kind表示对角线子图的类型,可以取hist和kde,分别表示直方图和密度图,默认对角线为直方图;参数hue指定分类变量;参数kind指定非对角线子图
40、类型,默认为散点图,取reg时为回归图,取scatter时为散点图。sns.pairplot(tips,diag_kind=hist,hue=sex,markers=x,o)Python大数据基础与实战 9.热力图 利用热力图可以查看数据集中多个特征之间两两相关性的强弱。seaborn中heatmap()函数提供了热力图的绘制功能。ssns.set(font=SimHei)#设置中文字体sns.heatmap(tips.corr(),xticklabels=True,yticklabels=True,cmap=rainbow,annot=True,square=True)#tips.corr(
41、)计算tips数据集中每两列之间的相关性,xticklabels参数为True时,绘制列名,annot参数决定是否在网格中写入数字,square参数设置网格是否为正方形,cmap参数是colormap对象名或者颜色名称,fnt参数指定网格中数据的显示格式Python大数据基础与实战 10.回归图 回归图,来揭示两个变量之间的线性关系。seaborn中使用regplot()和lmplot()函数来绘制回归图,其绘制的图表是一样的,但是两者传入的参数略有不同。sns.lmplot(total_bill,tip,hue=smoker,markers=x,o,data=tips)#使用hue参数可以加
42、入一个分类变量,通过不同颜色来表示Python大数据基础与实战总结数据可视化可以方便有效地传达与沟通信息,Python提供了众多的数据可视化工具包,其中matplotlib是经典的二维图形绘制工具包,借助它可以绘制日常中常见的图表,但是其在主题、数据简单分析方面有一定欠缺。seaborn作为matplotlib的扩展包,正好弥补这方面的缺陷。本章详细介绍了折线图、箱线图、饼图、散点图、柱状图、琴形图、回归图的绘制方法,使用时可以根据每种图表的特点合理选用,通过图表分析数据潜在关联,发现数据后面隐藏的有价值信息。Python大数据基础与实战感 谢Python大数据基础与实战谢谢,精品课件资料搜集