第十四、十五讲 数据可视化

数据可视化视图有很多,需要掌握视图的使用和其背后的目的,包括以下九种情况:
在这里插入图片描述
需要思考,用户是谁,想呈现的内容,突出数据怎样的特点,以及采用哪种视图呈现。

可视化工具

工具分为以下几类:
商业智能分析软件、可视化大屏、前端可视化组件和编程语言类。
1、商业智能分析
Tableau、PowerBI和中国软帆的FineBI
2、可视化大屏类
DataV、FineReport
3.前端可视化组件
基于Web渲染技术:Canvas(适用于位图)、SVG(可缩放矢量图)、WebGL(3D绘图协议)
可视化组件:Echarts、D3、Three.js和AntV
4、编程语言
Python的可视化库,如Matplotlib(基础)和Seaborn(高级)
R语言可视化库,自带绘图包Graphics及工具包ggplot2等

在这里插入图片描述

Python数据可视化

可视化视图可分为4类:
1、比较:比较数据间各类别的关系,或随时间变化的趋势,如折线图。
2、联系:观察两个或两个以上变量之间的关系,如散点图。
3、构成:每个部分占整体的百分比,或随时间的百分比变化,如饼图。
4、分布:关注单个变量或者多个变量的分布情况,如直方图。
按照变量个数,可视化视图可分为单变量分析和多变量分析。
下面介绍以下10种视图
在这里插入图片描述
1、散点图
scatter plot,将两个变量的值显示在二维坐标中,适合展示两个变量的关系,还有三维散点图。
可以采用两种方法绘制:(Matplotlib或Seaborn)

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
N=1000
x=np.random.randn(N)
y=np.random.randn(N)
plt.scatter(x,y,marker='x')
plt.show()
df=pd.DataFrame({'x':x,'y':y})
sns.jointplot(x='x',y='y',data=df,kind='scatter')
plt.show()

结果如下:
matplotlib
在这里插入图片描述
seaborn
在这里插入图片描述

2、折线图
可以用来表示数据随时间变化趋势。
同样可以用Matplotlib或Seaborn进行画图。

x=[2010,2011,2012,2013,2014,2015,2016,2017,2018]
y=[5,3,6,20,17,16,30,32,35]
plt.plot(x,y)
plt.show()
df=pd.DataFrame({'x':x,'y':y})
sns.lineplot(x='x',y='y',data=df)
plt.show()

在这里插入图片描述
3、直方图
将横坐标分成一定数量的小区间,用矩形条表示个数

a=np.random.randn(100)
s=pd.Series(a)
plt.hist(a)
plt.show()
sns.distplot(s,kde=False)
plt.show()
sns.distplot(s,kde=True) #通过核函数估计概率密度
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、条形图
查看类别的特征,宽度表示类别,长度表示类别的频数.

x=['Cat1','Cat2','Cat3','Cat4','Cat5']
y=[5,4,8,12,7]
plt.bar(range(5),y,width=0.8,align = 'center')
plt.xticks(range(5),x)
plt.show()
sns.barplot(x,y)
plt.show()

需要注意的是:bar()函数不能直接分类,它的横坐标仍然是标量刻度,要用xticks来映射分类(原专栏中代码有错误)。
在这里插入图片描述
5、箱线图
又称盒式图,由五个数值点组成:最大值(max)、最小值(min)、中位数(median)和上下四分位数(Q3,Q1)。可以分析出数据的差异性、离散程度和异常值等。

data=np.random.normal(size=(10,4))
lables=['A','B','C','D']
plt.boxplot(data,labels=lables)
plt.show()
df=pd.DataFrame(data,columns=lables)
sns.boxplot(data=df)
plt.show()

在这里插入图片描述
箱线图注解:
在这里插入图片描述
6、饼图
每个部分与总和的比例

nums=[25,37,33,37,6]
labels=['High-school','Bachelor','Master','Ph.d','Others']
plt.pie(x=nums,labels=labels)
plt.show()

在这里插入图片描述
7、热力图
heat map,一种矩阵表示方法,直观的多元变量分析方法。用颜色代表矩阵的元素值。

flights=sns.load_dataset('flights') #自带数据集,记录了1949到1960年期间,每个月航班乘客数量
data=flights.pivot('year','month','passengers')#索引名、列名、值。
ax = sns.heatmap(flights, annot=True,fmt="d",linewidth=0.5) #annot指定是否显示数据,fmt指定数据的显示格式,linewidth指定数据格子间的距离
plt.show()

颜色越浅,数量越多。
在这里插入图片描述
8、蜘蛛图
显示一对多关系的方法。一个变量相对于另一个变量的显著性。
使用Matplotlib画图,首先设置两个数组:labels(属性名称)、stats(属性值)。
准备angles数组,作为坐标角度,用stats数组设定统计结果数值,并且在原有的两个数组上增添一位,即添加数组的第一个元素(画完最后一个点后,要与第一个点进行连线)。

from matplotlib.font_manager import FontProperties  
labels=np.array(['推进','KDA','生存','团战','发育','输出'])#设置雷达各个顶点的名称
stats=[83,61,95,67,76,88]
angles=np.linspace(0,2*np.pi,len(labels),endpoint=False)#在[0,2*pi]中返回均匀分布的样本,个数为6,endpoint为false则不包括stop(圆,stop与start重合)
stats=np.concatenate((stats,[stats[0]]),axis=0) #闭合,默认axis=0
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure() #创建空白figure对象
ax=fig.add_subplot(111,polar=True) #极坐标子图,位置111
ax.plot(angles,stats,'o-',linewidth=2,color='r')#画线
ax.fill(angles,stats,facecolor='r',alpha=0.25)#填充
font=FontProperties(fname="C:\Windows\Fonts\simhei.ttf",size=14)#设置中文字体
ax.set_thetagrids(angles*180/np.pi,labels,fontproperties=font)
plt.show()

在这里插入图片描述
9、二元变量分布
两个变量之间的关系,需要用到二元变量分布,散点图就是一种二元变量分布。
在Seaborn里用sns.jointplot(x,y,data=Nane,kind)函数即可,kind='scatter’表示散点图,kind='kde’表示核密度图,kind='hex’表示Hexbin图(直方图的二维模拟)

tips=sns.load_dataset('tips')
print(tips.head(10))
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')
plt.show()

在这里插入图片描述
散点图:
在这里插入图片描述
核密度图:
在这里插入图片描述
Hexbin图:
在这里插入图片描述
10、成对关系
数据集中多个成对变量的分布,可直接采用sns.pairplot()函数,会同时展示出df中每对变量的关系,另外在对角线上,是每个变量自身作为单变量的分布情况。

iris=sns.load_dataset('iris')
sns.pairplot(iris)
plt.show()

在这里插入图片描述
总结:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值