Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记

笔记目录

  • 1. 数据可视化概述
    • 1.1 什么是数据可视化
    • 1.2 常见的图表类型
      • 1.2.1 直方图
      • 1.2.2 折线图
      • 1.2.3 条形图
      • 1.2.4 饼图
      • 1.2.5 散点图
      • 1.2.6 箱型图
  • 2.Matplotlib-绘制图表
    • 2.1 通过 figure()函数创建画布
      • 2.1.1 调用figure()函数构建一张新的空白画布
    • 2.2 通过subplot()函数创建单个子图
      • 2.2.1 通过subplot函数实现在画布上创建个子图
    • 2.3 通过subplots()函数创建多个子图
      • 2.3.1 通过subplots函数进行实现一次性创建一组子图
    • 2.4 通过add_subplots()方法添加和选中子图
      • 2.4.1 通过Figure类的add_subplot()方法添加和选中子图
    • 2.5 添加各类标签
      • 2.5.1 正确显示中文
    • 2.6 绘制常见图表
      • 2.3.1 hist()函数-绘制直方图
      • 2.3.2 scatter()函数-绘制散点图
      • 2.3.3 bar()函数-绘制柱状图
      • 2.3.4 颜色、线型、标记的设置
    • 2.7 本地保存图形
      • 2.7.1 调用savefig()函数进行保存
  • 3. Seaborn-绘制统计图形
    • 3.1 可视化数据的分布
      • 3.1.1 distplot()函数
      • 3.1.2 jointplot()函数
      • 3.1.3 pairplot()函数
    • 3.2 用分类数据绘图
      • 3.2.1 stripplot()函数
      • 3.2.2 boxplot()函数
      • 3.2.3 violinplot()函数
      • 3.2.4 barplot()函数
      • 3.2.5 pointplot()函数
  • 4. Bokeh-交互式可视化库
    • 4.1 通过Plotting绘制图形

1. 数据可视化概述

1.1 什么是数据可视化

​ 数据可视化是指将数据以图表的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第1张图片

​ 数据可视化旨在借助图形化手段,清晰有效地将数据中的各种属性和变量呈现出来,使用户可以从不同的维度观察数据,从而对数据进行更深入地观察和分析。

1.2 常见的图表类型

​ 图表是指在屏幕中显示的、可以直观地展示统计信息、对知识挖掘和信息生动感受起关键作用的图形结构。

1.2.1 直方图

​ 直方图,又称作质量分布图,它是由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据的类型,纵轴表示分布情況。

直方图可以利用方块的高度来反映数据的差异,只适用于中小规模的数据集,不适用于大规模的数据集。

1.2.2 折线图

​ 折线图是用直线段将各数据点连接起来而组成的图形,以折线的方式显示数据的变化趋势。

折线图可以显示随时间变化的连续数据,适用于显示在相等时间间隔下数据的趋势。

1.2.3 条形图

​ 条形图是用宽度相同的条形的高度或者长短来表示数据多少的图形,可以横置或纵置,纵置时也称为柱形图。

1.2.4 饼图

​ 饼图可以显示一个数据序列中各项的大小与各项总和的比例,每个数据序列具有唯一的颜色或图形,并且与图例中的颜色是相对应的。

饼图可以很清晰地反映出各数据系列的百分比情况。

1.2.5 散点图

​ 散点图是指数据点在直角坐标系平面上的分布图,通常用于比较跨类别的数据。散点图包含的数据点越多,比较的效果就会越好。

散点图中每个坐标点的位置是由变量的值决定的,用于表示因变量随自变量而变化的大致趋势,以判断两种变量的相关性。

1.2.6 箱型图

箱形图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情況资料的统计图。

图表类型 特点总结
直方图 适于比较数据之间的多少。
折线图 反映一组数据的变化趋势。
条形图 显示各个项目之间的比较情况,和直方图有类似的作用。
散点图 显示若干数据系列中各数值之间的关系
箱形图 识别异常值方面有一定的优越性。

2.Matplotlib-绘制图表

2.1 通过 figure()函数创建画布

​ 要想使用 Matplotlib绘制图表,需要先导入绘制图表的模块 pyplot,该模块提供了一种类似MATLAB的绘图方式,主要用于绘制简单或复杂的图形。

# 使用Matplotlib绘制图表,需要先导入绘制图表的模块pyplot
import matplotlib.pyplot as plt

如果要在 Jupyter Notebook中绘图,则需要增加如下命令

# 要在Jupyter Notebook中绘图,最好增加如下魔术命令:
%matplotlib inline

​ pyplot模块中默认有一个 Figure对象,该对象可以理解为一张空白的画布,用于容纳图表的各种组件。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第2张图片
data_one = np.arange(100, 150)  # 生成包含100~150的数组
# 绘制data1折线图,如果传入了单个列表或数组,会将其设为Y轴序列,且自动生成X轴的序列并与Y轴具有相同的长度
plt.plot(data_one)    
plt.show()            # 在本机上显示图形  
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第3张图片

2.1.1 调用figure()函数构建一张新的空白画布

num:表示图形的编号或名称。
figsize:用于设置画布的尺寸。
facecolor:用于设置画板的背景颜色。
edgecolor:用于显示边框颜色。

# 创建新的空白画布,返回Figure实例
figure_obj = plt.figure()
data_two = np.arange(200, 301)      # 生成包含200~300的数组
plt.figure(facecolor='gray')       # 创建背景为灰色的新画布
# 通过data2绘制折线图,如果传入了单个列表或数组,会将其设为Y轴序列,
# 且自动生成X轴的序列并与Y轴具有相同的长度
plt.plot(data_two)  
plt.show() 
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第4张图片
#创建宽度12英寸,高度8英寸,背景为红色的新画布
plt.figure(figsize=(12,8),facecolor='red')
plt.plot(data_two) # 通过data2绘制折线图
plt.show()   
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第5张图片
# 创建宽度12英寸,高度8英寸,图形分辨率60,背景为绿色的新画布
plt.figure(figsize=(12,8),dpi=60,facecolor='green')    
plt.plot(data_two) # 通过data2绘制折线图
plt.show()   
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第6张图片
# 创建宽度12英寸,高度8英寸,图形分辨率120,背景为蓝色的新画布
plt.figure(figsize=(12,8),dpi=120,facecolor='blue' )    
plt.plot(data_two) # 通过data2绘制折线图
plt.show()   
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第7张图片

2.2 通过subplot()函数创建单个子图

​ Figure对象允许划分为多个绘图区域,每个绘图区域都是一个Axes对象,它拥有属于自己的坐标系统,被称为子图。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第8张图片

2.2.1 通过subplot函数实现在画布上创建个子图

nrows, ncols:表示子区网格的行数、列数。
index:表示矩阵区域的索引。

​ subplot函数会将整个绘图区域等分为nrows(行)* ncols(列)”的矩阵区域,之后按照从左到右、从上到下的顺序对每个区域进行编号。其中,位于左上角的子区域编号为1,依次递增。

nums = np.arange(0, 101)    # 生成0~100的数组
# 分成2*2的矩阵区域,占用编号为1的区域,即第1行第1列的子图
plt.subplot(221)
# 在选中的子图上作图
plt.plot(nums, nums)
# 在本机上显示图形
plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第9张图片
nums = np.arange(0, 101)    # 生成0~100的数组
# 分成2*2的矩阵区域,占用编号为1的区域,即第1行第1列的子图
plt.subplot(221)
# 在选中的子图上作图
plt.plot(nums, nums)
# 分成2*2的矩阵区域,占用编号为2的区域,即第1行第2列的子图
plt.subplot(222)
# 在选中的子图上作图
plt.plot(nums, -nums)
# 在本机上显示图形
plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第10张图片
nums = np.arange(0, 101)    # 生成0~100的数组
# 分成2*2的矩阵区域,占用编号为1的区域,即第1行第1列的子图
plt.subplot(221)
# 在选中的子图上作图
plt.plot(nums, nums)
# 分成2*2的矩阵区域,占用编号为2的区域,即第1行第2列的子图
plt.subplot(222)
# 在选中的子图上作图
plt.plot(nums, -nums)
# 分成2*1的矩阵区域,占用编号为2的区域,即第2行的子图
plt.subplot(212)
# 在选中的子图上作图
plt.plot(nums, nums**2)
# 在本机上显示图形
plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第11张图片

如果 nrows、 ncols和 index这三个参数的值都小于10,则可以把它们简写为一个实数。

2.3 通过subplots()函数创建多个子图

2.3.1 通过subplots函数进行实现一次性创建一组子图

nrows, ncols:表示子区网格的行数、列数
sharex, sharey:表示控制x或y轴是否共享。

​ subplots()函数会返回一个元组,元组的第一个元素为 Figure对象(画布)第二个元素为Axes对象(子图,包含坐标轴和画的图)或Axes对象数组。如果创建的是单个子图,则返回的是一个Axes对象,否则返回的是一个Axes对象数组。

# 生成包含1~100之间所有整数的数组
nums = np.arange(1, 101)
# subplots()函数会返回一个元组,元组的第一个元素为Figure对象(画布),
# 第二个元素为Axes对象(子图,包含坐标轴和画的图)或Axes对象数组。
# 分成2*2的矩阵区域,返回子图数组axes
fig, axes = plt.subplots(2, 2)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第12张图片
# 生成包含1~100之间所有整数的数组
nums = np.arange(1, 101)
# 分成2*2的矩阵区域,返回子图数组axes
fig, axes = plt.subplots(2, 2)
ax1 = axes[0, 0]  # 根据索引[0,0]从Axes对象数组中获取第1个子图
# 在选中的子图上作图
ax1.plot(nums, nums)
plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第13张图片
# 生成包含1~100之间所有整数的数组
nums = np.arange(1, 101) 

# 分成2*2的矩阵区域,返回子图数组axes
fig, axes = plt.subplots(2, 2)

ax1 = axes[0, 0]  # 根据索引[0,0]从Axes对象数组中获取第1个子图
ax2 = axes[0, 1]   # 根据索引[0,1]从Axes对象数组中获取第2个子图
ax3 = axes[1, 0]   # 根据索引[1,0]从Axes对象数组中获取第3个子图
ax4 = axes[1, 1]   # 根据索引[1,1]从Axes对象数组中获取第4个子图

# 在选中的子图上作图
ax1.plot(nums, nums)
ax2.plot(nums, -nums)
ax3.plot(nums, nums**2)
ax4.plot(nums, np.log(nums))

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第14张图片

2.4 通过add_subplots()方法添加和选中子图

2.4.1 通过Figure类的add_subplot()方法添加和选中子图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-et0QMCtj-1589338760944)(https://gitee.com/LiangPiHero/giteeForTypora/raw/master/Linux_imge/add_subplots()]方法_运行结果01.png)

​ 上述方法中,* args参数表示一个三位数的实数或三个独立的实数,用于描述子图的位置。比如“a, b, c”,其中a和b表示将Figure对象分割成a*b大小的区域,c表示当前选中的要操作的区域。

例:调用add_subplot()方法时传入的是“2,2,1”,则会在的2*2的矩阵中编号为1的区域上绘图。

# 创建Figure实例
fig = plt.figure(figsize=(12,8))

# 添加子图
fig.add_subplot(2, 2, 1)

# 创建一个随机数组
random_arr = np.random.randn(100)

# 在子图上作图,默认是在最后一次使用subplot的位置上作图,即编号为3的位置
plt.plot(random_arr)

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第15张图片
# 创建Figure实例
fig = plt.figure(figsize=(12,8))

# 添加子图
fig.add_subplot(2, 2, 1)
fig.add_subplot(2, 2, 2)
fig.add_subplot(2, 2, 4)
fig.add_subplot(2, 2, 3)

# 创建一个随机数组
random_arr = np.random.randn(100)

# 在子图上作图,默认是在最后一次使用subplot的位置上作图,即编号为3的位置
plt.plot(random_arr)

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第16张图片
# 创建Figure实例
fig = plt.figure(figsize=(12,8))

# 添加子图
fig.add_subplot(2, 2, 1)
fig.add_subplot(2, 2, 2)
fig.add_subplot(2, 2, 4)
fig.add_subplot(2, 2, 3)

# 创建一个随机数组
random_arr = np.random.randn(100)

# 在子图上作图,默认是在最后一次使用subplot的位置上作图,即编号为3的位置
plt.plot(random_arr)

fig.add_subplot(2, 2, 2)  # 选中已添加的子图
plt.plot([1,2,3],[5,6,7])

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第17张图片

每调用一次add_subplot()方法只会规划画布划分子图,且只会添加一个子图。当调用plot()函数绘制图形时,会画在最后一次指定子图的位置上。

2.5 添加各类标签

​ 绘图时可以为图形添加一些标签信息,比如标题、坐标名称、坐标轴的刻度等。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第18张图片

这些函数之间是并列关系,没有先后顺序,我们既可以先绘制图形,也可以先添加标签。值得一提的是,图例的添加只能在绘制完图形之后。

data = np.arange(0, 1.1, 0.01)  

plt.figure(figsize=(12,8)) # 创建宽度12英寸,高度8英寸的画布

plt.title("Title")      # 添加标题
plt.xlabel("liang")         # 添加x轴的名称
plt.ylabel("pi")         # 添加y轴的名称

# 设置x和y轴的刻度
plt.xticks([0, 0.5, 1])
plt.yticks([0, 0.6, 1.2])

plt.plot(data, data**2, label='y=x^2')         # 绘制y=x^2曲线,label相对应
plt.plot(data, data**3, label='y=x^3')         # 绘制y=x^3曲线

plt.legend(loc='best')   # 添加图例,只能在绘制完图形之后,最佳位置

plt.show()              # 在本机上显示图形
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第19张图片

2.5.1 正确显示中文

​ 在python脚本中动态设置matplotlibrc,这样就可以避免由于更改配置文件而造成的麻烦。

# pylab结合了numpy和matplotlib.pyplot,对交互式是用来说比较方便,既可以画图又可以进行简单计算。
# 但是对于一个项目来说,最好分开使用numpy和pylot
# from pylab import mpl
# 设置显示中文字体
# rcParams 可以直接调用
mpl.rcParams[‘font.sans-serif] = [‘SimHei’] 

​ 由于字体更改以后,会导致坐标轴中的部分字符无法正常显示,这时需要更改axes.unicode_minus参数。

# 设置正常显示符号
mpl.rcParams['axes.unicode_minus'] = False
data = np.arange(0, 1.1, 0.01)  

plt.figure(figsize=(12,8)) # 创建宽度12英寸,高度8英寸的画布

plt.title("Title标题")     # 添加标题
plt.xlabel("x 轴")         # 添加x轴的名称
plt.ylabel("y 轴",fontsize=20)         # 添加y轴的名称

# 设置x和y轴的刻度
plt.xticks([0, 0.5, 1])
plt.yticks([0, 0.6, 1.2])

plt.plot(data, data**2, label='y=x^2')         # 绘制y=x^2曲线
plt.plot(data, data**3, label='y=x^3')         # 绘制y=x^3曲线

plt.legend(loc='best')   # 添加图例,只能在绘制完图形之后

plt.show()              # 在本机上显示图形
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第20张图片

2.6 绘制常见图表

​ matplotlib.pyplot模块中包含了快速生成多种图表的函数。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第21张图片

2.3.1 hist()函数-绘制直方图

​ hist()函数用于绘制直方图

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第22张图片

x:表示输入值。
bins:表示绘制条柱的个数。
range: bins的上下范围(最大和最小值)。
color:表示条柱的颜色,默认为None。

arr_random = np.random.randn(100)   # 创建随机数组

plt.hist(arr_random, bins=15, color='r', alpha=0.7) # 绘制直方图
plt.show()  # 显示图形
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第23张图片

2.3.2 scatter()函数-绘制散点图

​ scatter()函数用于绘制散点图

x, y:表示x轴和y轴对应的数据。
s:指定点的大小。
c:指定散点的颜色。
marker :表示绘制的散点类型。
alpha:表示点的透明度,接收0~1之间的小数。

# 创建包含整数0~50的数组,用于表示x轴的数据
x = np.arange(51)
# 创建另一数组,用于表示y轴的数据
y = np.random.rand(51) * 10

plt.scatter(x, y,c='g')   # 绘制散点图
plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第24张图片

2.3.3 bar()函数-绘制柱状图

​ 用于绘制柱状图的函数为bar()

x:表示x轴的数据。
height:表示条形的高度。
width:表示条形的宽度,默认为0.8。
color:表示条形的颜色。
edgecolor:表示条形边框的颜色。

# 创建包含0~4的一维数组
x = np.arange(5)
# 从上下限范围内随机选取整数,创建两个2行5列的数组
y1, y2 = np.random.randint(1, 31, size=(2, 5))

width = 0.25     # 条形的宽度
ax = plt.subplot(1,1,1)
ax.bar(x, y1, width, color='y')         # 绘制黄色的柱形图
ax.bar(x+width, y2, width, color='g')   # 绘制另一个绿色的柱形图
ax.set_xticks(x+width)                    # 设置x轴的刻度
# 设置x轴的刻度标签
ax.set_xticklabels(['January', 'February', 'March', 'April ', 'May ']) 
plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第25张图片

2.3.4 颜色、线型、标记的设置

​ 在使用绘制图表的函数(比如plot等)画图时,可以设定线条的相关参数,包括颜色、线型和标记风格。

​ 线条颜色使用color参数控制,它支持如下表所列举的颜色值。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第26张图片

​ 线型使用linestyle参数控制,它支持如下表所列举的线型值。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第27张图片

​ 标记风格使用marker参数控制,它支持如右表所列举的标记值。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第28张图片
data = np.arange(1, 3, 0.3)

# 绘制直线,颜色为青色,标记为“x”,线型为长虚线
plt.plot(data, color="c", marker="x", linestyle="--")

# 绘制直线,颜色为品红,标记为实心圆圈,线型为短虚线
plt.plot(data+1, color="m", marker="o", linestyle=":")

# 绘制直线,颜色为黑色,标记为五边形,线型为短点相间线
plt.plot(data+2, color="k", marker="p", linestyle="-.")

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第29张图片
data = np.arange(1, 3, 0.3)

# 也可采用下面的方式绘制三条不同颜色、标记和线型的直线
plt.plot(data, 'cx--', data+1, 'mo:', data+2, 'kp-.')

# 保存当前生成的图表,须在显示图形之前
plt.savefig('demo3.png')

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第30张图片

2.7 本地保存图形

2.7.1 调用savefig()函数进行保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqefF8E8-1589338760952)(https://gitee.com/LiangPiHero/giteeForTypora/raw/master/Linux_imge/本地保存图形_savefig()]函数运行结果01.png)

​ fname参数是一个包含文件名路径的字符串,或者是一个类似于Python文件的对象。如果format 参数设为None且fname参数是一个字符串,则输出格式将根据文件名的扩展名推导出来。

# 创建包含100个数值的随机数组
random_arr = np.random.randn(100)

# 将随机数组的数据绘制线形图
plt.plot(random_arr)

# 保存当前生成的图表,须在显示图形之前
plt.savefig('demo.png')

plt.show()
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第31张图片

3. Seaborn-绘制统计图形

3.1 可视化数据的分布

​ Seaborn基于Matplotlib核心库进行了更高级的API封装,可以轻松地画出更漂亮的图形,而Seaborn的漂亮主要体现在配色更加舒服,以及图形元素的样式更加细腻。

import seaborn as sb
# 使用Matplotlib绘制图表,需要先导入绘制图表的模块pyplot
import matplotlib.pyplot as plt
# 要在Jupyter Notebook中绘图,最好增加如下魔术命令:
%matplotlib inline

​ 当处理一组数据时,通常先要做的就是了解变量是如何分布的。

  • 对于单变量的数据来说,采用直方图或核密度曲线是个不错的选择。
  • 对于双变量来说,可采用多面板图形展现,比如散点图、二维直方图、核密度估计图形等。

对于单变量,采用直方图

3.1.1 distplot()函数

​ 默认绘制一个带有核密度估计曲线的直方图

a:表示要观察的数据。
bins:用于控制条形的数量。
hist:表示是否绘制(标注)直方图。
kde:表示是否绘制高斯核密度估计曲线。
rug:表示是否在支持的轴方向上绘制rugplot。

​ 如果希望使用Seaborn用Matplotlib的默认样式,则需要**显式地调用set()或set_style()、set_context()和set_palette()中的一个或多个函数**,以获取Seaborn或者Matplotlib默认的绘图样式。

sb.set()                    # 显式调用set()获取默认绘图样式
np.random.seed(0)            # 确定随机数生成器的种子
arr = np.random.randn(100)        # 生成随机数组
# Seaborn中提供了一个distplot()函数,它默认绘制的是一个带有核密度估计曲线的直方图
ax = sb.distplot(arr, bins=10)  # 绘制直方图
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第32张图片

​ 直方图会因为条柱数量的不同导致图表的效果有着很大的差异,为了解决这个问题,可以绘制核密度估计曲线进行展现。

​ 核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,可以比较直观的看出数据样本本身的分布特征。

# 创建包含500个位于[0,100]之间整数的随机数组
array_random = np.random.randint(0, 100, 500)

# 通过distplot()函数 绘制核密度估计曲线
sb.distplot(array_random, hist=False, rug=True)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第33张图片

3.1.2 jointplot()函数

​ 创建一个多面板图形,以显示两个变量之间的关系及每个变量在单独坐标轴上的单变量分布。

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第34张图片
# 创建DataFrame对象
dataframe_obj = pd.DataFrame({"x": np.random.randn(500),"y": np.random.randn(500)})
# 通过jointplot()函数可以创建一个多面板图形,
# 以显示两个变量之间的关系及每个变量在单独坐标轴上的单变量分布
# kind参数默认为"scatter"散点图

sb.jointplot(x="x", y="y", data=dataframe_obj)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第35张图片
# 调用jointplot()函数时只要传入kind=“hex”可以绘制二维直方图
# kind="hex"六边形直方图,根据六边形色块颜色判断

sb.jointplot(x="x", y="y", data=dataframe_obj, kind="hex")
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第36张图片
# 调用jointplot()函数时传入kind=“kde”可以绘制核密度估计图形
# 颜色越深密度越大

sb.jointplot(x="x", y="y", data=dataframe_obj, kind="kde")
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第37张图片

3.1.3 pairplot()函数

​ 要想在数据集中绘制多个成对的双变量分布,则可以使用pairplot()函数实现,该函数会创建一个坐标轴矩阵,并且显示DataFrame对象中每对变量的关系。

​ Seaborn中内置的所有数据集,可点击链接 https://github.com/mwaskom/seaborn-data进行查看。

#  Requests: 最友好的网络爬虫功能库
import requests
html_data = requests.get('https://github.com/mwaskom/seaborn-data/blob/master/tips.csv')
html_data
tips = pd.read_html(html_data.content)
tips[0]
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第38张图片
dataset = tips[0]
del dataset['Unnamed: 0']  # 删除'Unnamed: 0'列数据,数据预处理
dataset
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第39张图片
# 绘制多个成对的双变量分布
sb.pairplot(dataset)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第40张图片

3.2 用分类数据绘图

​ 数据集中的数据类型有很多种,除了连续的特征变量之外,最常见的就是类目型的数据类型了。

  • 分类数据散点图:swarmplot()与stripplot();
  • 分类数据的分布图:boxplot()与violinplot();
  • 分类数据的统计估算图:barplot()与pointplot()。

3.2.1 stripplot()函数

x,y,hue:用于绘制长格式数据的输入。
data:用于绘制的数据集。如果x和y不存在,则它将作为宽格式,否则将作为长格式。
order,hue_order:用于绘制分类的级别。
jitter:表示抖动的程度(仅沿类别轴)。

tips = dataset
tips
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第41张图片
# 可以在调用stripplot()函数时传入jitter参数,以调整横坐标的位置
sb.stripplot(x="day", y="total_bill", data=tips, jitter=True)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第42张图片
# 调用swarmplot() 函数绘制散点图,该函数的好处就是所有的数据点都不会重叠
sb.swarmplot(x="day", y="total_bill", data=tips)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第43张图片

​ 散点图不能够直观地反映出各个分类的数据分布,为此,可以绘制箱形图和提琴图两种图形查看

3.2.2 boxplot()函数

​ 绘制箱形图

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第44张图片

orient:表示数据垂直或水平显示,取值为“v” | “h”。
palette:用于设置不同级别色相的颜色变量。
saturation:用于设置数据显示的颜色饱和度。

# seaborn中用于绘制箱形图的函数为boxplot()
sb.boxplot(x="day", y="total_bill", data=tips)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第45张图片
sb.boxenplot(x="day", y="total_bill", data=tips)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第46张图片

3.2.3 violinplot()函数

​ 通过violinplot()函数可以绘制提琴图

# 通过 violinplot() 函数绘制提琴图
# 提琴图是箱形图与核密度图的结合,它可以展示任意位置的密度,很直观地看到哪些位置的密度较高
sb.violinplot(x="day", y="total_bill", data=tips)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第47张图片

​ 要想查看每个分类的集中趋势,则可以使用条形图和点图进行展示,Seaborn库中用于绘制这两种图表的具体函数如下:

  • barplot()函数:用于绘制条形图。
  • pointplot()函数:用于绘制点图。

3.2.4 barplot()函数

​ 默认情况下,barplot()函数会在整个数据集上使用均值进行估计。

  1. ​ 若每个类别中有多个类别时(使用了hue参数),则条形图可以使用引导来计算估计的置信区间,并使用误差条来表示置信区间。
  2. ​ 置信区间,是指由样本统计量所构造的总体参数的估计区间。
# 类别内的统计估计
# 要想查看每个分类的集中趋势,则可以使用条形图和点图进行展示
# barplot()函数:用于绘制条形图
sb.barplot(x="day", y="total_bill", data=tips)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第48张图片

3.2.5 pointplot()函数

​ 用于估计的图形是点图

​ pointplot()函数会用高度估计值对数据进行描述,而不是显示完整的条形,它只会绘制点估计和置信区间。

# pointplot()函数:用于绘制点图
sb.pointplot(x="day", y="total_bill", data=tips)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第49张图片

4. Bokeh-交互式可视化库

​ Bokeh是针对浏览器使用的交互式可视化库,它旨在提供优雅、简洁的通用图形,帮助程序员快速地、轻松地创建交互图、数据应用程序等。

​ Bokeh库捆绑了多种语言,包括Python、R语言、lua和Julia,结合这些语言产生了JSON文档,此文档将作为BokehJS(JavaScript库)的输入,之后将数据展示到Web浏览器上面。

4.1 通过Plotting绘制图形

​ 使用plotting创建图表的基本步骤如下:

Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第50张图片 Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第51张图片
from bokeh.plotting import figure, output_notebook, show
# 输出到电脑屏幕上
output_notebook()
fig_obj = figure(plot_width=400, plot_height=400)
# 添加矩形框,标有大小、颜色和alpha值
fig_obj.square([2, 5, 6, 4], [2, 3, 2, 1], size=20, color="navy")
# 在默认的浏览器中显示图表
show(fig_obj)
Python数据分析之数据可视化(数据可视化概述、Matplotlib、Seaborn、Bokeh)学习笔记_第52张图片

你可能感兴趣的:(Python)