失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 数据分析实战之数据可视化

数据分析实战之数据可视化

时间:2019-01-29 21:41:10

相关推荐

数据分析实战之数据可视化

一、可视化图有哪些

按照数据之间的关系,可以把可视化图分为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更加高级的可视化库

如果觉得《数据分析实战之数据可视化》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。