一、可视化图有哪些
按照数据之间的关系,可以把可视化图分为4类
比较:比较数据间各类别的关系,或者是它们随时间的变化趋势,比如折线图;联系:查看两个或两个以上变量之间的关系,比如散点图;构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图;分布:关注单个变量,或者多个变量的分布情况,比如直方图。
按照变量的个数,可以分为单变量分析和多变量分析
单变量分析:指的是一次只关注一个变量多变量分析:可以在一张图上查看两个变量以上的关系
二、10种常见的视图
1、散点图:将两个变量的值显示在二维坐标中,非常适合展示两个变量之间的关系。
matpoltlib绘制可视化图形用pyplot这个工具包。在使用前需要先进行引用。也可以用seaborn这个工具包,使用前进行包的引用1)plt.scatter(x,y,marker=None)x,y是坐标,marker代表了标记的符号,选择不同的marker呈现出的符号样式也不同
2)sns.jointplot(x,y,data = None,kind = 'scatter')x,y是data中的下标,data是要传入的数据;一般是DataFrame类型;kind代表不同的视图绘图方式
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsn = 1000x = np.random.randn(n)y = np.random.randn(n)plt.scatter(x,y,marker='*') df = pd.DataFrame({'x':x,'y':y})sns.jointplot(x,y,data = df,kind = 'scatter')
Matplotlib 默认情况下呈现出来的是个长方形。而 Seaborn呈现的是个正方形,不仅显示出了散点图,还给了这两个变量的分布情况
2、折线图:表示数据随时间变化的趋势。
1)在Matplotlib 使用plt.plot()函数
2)在Seaborn中使用sns.lineplot (x, y, data=None)函数。其中x,y是data中的下标,data是要传入的数据,一般是DataFrame类型
x1 = [,,,,,,,,,]y1 = [5,2,46,12,23,30,45,60,62,80]plt.plot(x1,y1,marker = '^')df1 = pd.DataFrame({'x':x,'y':y})sns.lineplot(x = 'x',y = 'y',data = df1)
3、直方图:是把横坐标分成一定数量的小区间(箱子),然后在每个箱子内用矩形条展示该箱子的箱子数(即y)。
1)在 Matplotlib 中,我们使用plt.hist(x,bins = 10)函数,其中 x 是一维数组,bins代表直方图中的箱子数量,默认是10。
2)Seaborn 中,我们使用sns.distplot(x,bins = 10,kde = True)函数。参数 x 是一维数组,bins代表直方图中的箱子数量,kde代表显示核密度估计,默认是True,当kde = False时,不进行显示。
a = np.random.randn(1000)s = pd.Series(a)plt.hist(s)sns.distplot(s,kde = False)plt.show()sns.distplot(s,kde = True)plt.show()
4、条形图:查看类别的特征。条形图的长度代表类别的频数,宽度代表类别
1)在 Matplotlib 中,我们使用plt.bar(x,height)函数,其中 x 代表x轴的位置序列,height是y轴的数值序列
2)在 Seaborn 中,我们使用sns.barplot(x=None, y=None, data=None)函数。参数data为DataFrame类型,x、y是data中的变量
x2 = ['a','b','c','d','e']y2 = [3,15,17,12,24]plt.bar(x2,y2)sns.barplot(x2,y2)
5、箱线图:由5个数值组成:最大值 (max)、最小值 (min)、中位数 (median)和上下四分位数(Q3,Q1)。它可以帮我们分析出数据的差异性、离散程度和异常值等
在Matplotlib中,使用plt.boxplot(x,labels = None)函数,其中参数x代表要绘制箱线图的数据,labels可以为箱线图添加标签。
在Seaborn中,使用sns.boxplot(x = None,y = None,data = None)函数,其中参数data为DataFrame类型,x、y是data中的变量
data = np.random.normal(size = (10,4)) #标准正态分布labels = ['A','B','C','D']plt.boxplot(data,labels=labels)df = pd.DataFrame(data,columns=labels)sns.boxplot(data = df)
6、饼图:显示每个部分大小与总和之间的比例
在matplotlib中,使用plt.pie(x labels = None)函数,其中参数x表示要绘制饼图的数据,labels是缺省值可以为饼图添加标签
import matplotlib.pyplot as plt# 数据准备nums = [25, 37, 33, 37, 6]labels = ['High-school','Bachelor','Master','Ph.d', 'Others']# 用 Matplotlib 画饼图plt.pie(x = nums, labels=labels)plt.show()
7、热力图:是一种矩阵表示方法,其中矩阵中的元素值用颜色来代表,不同的颜色代表不同大小的值。通过颜色就能直观知道某个位置上数值的大小。是一种非常直观的多元变量分析方法
一般使用seaborn中的sns.heatmap(data)函数,其中data代表需要绘制的热力图数据。
import matplotlib as pltimport seaborn as snsflights = sns.load_dataset('flights') #seaborn自带的数据集,该数据集记录了1949到1960年期间, 每个月的航班乘客的数量data = flights.pivot('year','month','passengers') sns.heatmap(data)
可以观察到不同年份 不同月份的乘客变化情况,其中颜色越浅的代表乘客数量越多。
8、蜘蛛图:是一种显示一对多关系的方法。在蜘蛛图中,一个变量相对于另一个变量的显著性是清晰可见的。
使用Matplotlib来画图,首先设置两个数组:labels属性的名称和stats属性值。
蜘蛛图是圆形,需要计算每个坐标的角度,然后对这些数值进行设置。当画完最后一个点,需要与第一个点进行连线。
需要angle数组计算角度;需要stats数组设定统计结果的数值;需要在原有angles和stats数组上增加一位,即添加数组的第一个元素
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom matplotlib.font_manager import FontProperties # 数据准备labels=np.array([u" 推进 ","KDA",u" 生存 ",u" 团战 ",u" 发育 ",u" 输出 "])stats=[83, 61, 95, 67, 76, 88]# 画图数据准备,角度、状态值angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)stats=np.concatenate((stats,[stats[0]]))angles=np.concatenate((angles,[angles[0]]))# 用 Matplotlib 画蜘蛛图fig = plt.figure() #创建空白的画布 ax = fig.add_subplot(111, polar=True)#把画布分成1行1列ax.plot(angles, stats, 'o-', linewidth=2) #plot 设置线形和宽度ax.fill(angles, stats, alpha=0.25) #fill 绘制填充多边形,透明度为0.25# 设置中文字体font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14) ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)plt.show()
9、二元变量分布:观察两个变量之间的关系
在seaborn中,使用sns.joinplot(x,y,data = None,kind)函数。其中用kind表示不同的视图类型,
kind = 'scatter'代表散点图;kind = 'kde'代表核密度图;kind = 'hex'代表Hexbin图,代表直方图的二维模拟
采用seaborn中自带的数据集tips
import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inlinetips = sns.load_dataset('tips')sns.jointplot(x = 'total_bill',y = 'tip',data = tips,kind = 'scatter')sns.jointplot(x = 'total_bill',y = 'tip',data = tips,kind = 'kde')sns.jointplot(x = 'total_bill',y = 'tip',data = tips,kind = 'hex')
10、成对关系:探索数据集中的多个成对双变量的分布,可以直接采用sns.pairplot()函数。它会同时展示出DataFrame中每对变量的关系,在对角线上可以看到每个变量自身作为单变量的分布情况。是探索性分析中常用的函数,可以帮我们理解变量对之间的关系
使用seaborn自带的iris数据集
import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inlinedata = sns.load_dataset('iris')sns.pairplot(data)
总结:Matplotlib和Seaborn之间的关系就像numpy和pandas之间的关系,Seaborn是基于Matplotlib更加高级的可视化库
如果觉得《数据分析实战之数据可视化》对你有帮助,请点赞、收藏,并留下你的观点哦!