目录
Seaborn在单变量、双变量和多变量数据可视化中常用的三个方法:
seaborn的下载
Seaborn是一个基于Matplotlib的Python数据可视化库,它提供了多种直观且美观的数据可视化方法。
首先在终端中下载输入pip install seaborn
问题:seaborn中的示例数据集无法使用、下载压缩包后电脑没有seaborn-data文件夹,在用户下创建后仍无法使用。
1. Seaborn 的基本功能
- 数据可视化:Seaborn 提供了多种数据可视化方式,包括散点图、线图、柱状图、箱线图、热力图等,有助于直观地理解数据分布和特征之间的关系。
- 统计图形:除了基本的数据可视化外,Seaborn 还提供了多种统计图形,如直方图、核密度估计图、小提琴图等,这些图形可以帮助用户更好地理解数据的统计特性。
- 数据集:Seaborn 自带了一些示例数据集,如
tips
、flights
、iris
等,这些数据集可以用于学习和测试数据可视化技巧。
2. Seaborn 的一些常用功能
pairplot
:用于绘制成对的双变量分布图,非常适合用于探索多个特征之间的关系。kdeplot
:用于绘制核密度估计图,可以展示数据的分布形态。boxplot
:用于绘制箱线图,可以展示数据的四分位数、中位数以及异常值等信息。heatmap
:用于绘制热力图,可以展示矩阵或表格数据中的值的大小和分布情况。
Seaborn在单变量、双变量和多变量数据可视化中常用的三个方法:
单变量数据可视化
直方图(Histogram)
- 用途:直方图通常用于可视化单个变量的分布,如查看数据的中心趋势、分散程度等。
- 示例代码:
import seaborn as sns
import matplotlib.pyplot as plt
# data是包含单变量数据的DataFrame或Series
sns.histplot(data=data['variable_name'],kde = True)
# kde=True
参数表示同时绘制核密度估计曲线。plt.show()
- 特点:直方图通过将数据范围划分为多个区间(称为“箱子”或“bins”),并计算每个区间内的数据点数量来展示数据的分布情况。
双变量数据可视化
散点图(Scatter Plot)
- 用途:散点图用于展示两个变量之间的关系,通过点的位置(x轴和y轴坐标)来表示两个变量的值,从而观察它们之间是否存在某种趋势或模式。
- 示例代码:
sns.scatterplot(x='x_variable', y='y_variable', data=data)
plt.show()
- 特点:散点图直观易懂,适用于探索性数据分析,可以快速发现变量之间的相关性或潜在的模式。
多变量数据可视化
热力图(Heatmap)
- 用途:热力图是一种数据的二维可视化表示,它使用颜色来显示变量的值。在多变量数据可视化中,热力图常用于显示数据集中多个变量之间的相关性,如相关系数矩阵的可视化。
- 示例代码:
# data是包含多个数值变量的DataFrame
corr_matrix = data.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
# annot=True
参数表示在每个单元格中显示数值,cmap
参数用于指定颜色映射plt.show()
- 特点:热力图通过颜色的深浅来表示数值的大小,可以清晰地展示多个变量之间的复杂关系,是进行数据探索和相关性分析的有力工具。
Seaborn 直方图、核密度估计图、小提琴图
一、Seaborn 直方图
1. 基本概念
直方图(Histogram)是一种用于展示数据分布的图表,通过条形的高度来表示数据落在各个区间内的频率或数量。在Seaborn中,直方图主要用于观察数据的分布情况,如数据的集中趋势、分散程度等。
2. 绘制方法
在Seaborn中,绘制直方图可以使用histplot
函数或displot
函数(在较新版本的Seaborn中推荐使用histplot
)。
-
使用
histplot
函数:import seaborn as sns
import matplotlib.pyplot as plt
# df是已经加载好的DataFrame
sns.histplot(data=df, x='某列名')
plt.show()
其中,
data
参数指定数据源,x
参数指定要绘制直方图的列。 -
调整直方图的参数:
bins
:控制直方图的分箱数。kde
:是否添加核密度估计曲线。stat
:控制直方图的统计量,如count
(观测数,默认)、frequency
(频数)、density
(密度)、probability
(概率)。
二、核密度估计图(KDE)
1. 基本概念
核密度估计(Kernel Density Estimation, KDE)是一种用于估计随机变量概率密度函数的非参数方法。它通过对数据点进行平滑处理,从而得到整个数据集的密度分布曲线。
2. 绘制方法
在Seaborn中,可以直接使用kdeplot
函数绘制核密度估计图,或者使用histplot
函数时设置kde=True
来同时展示直方图和核密度估计曲线。
案例:
# 导入必要的库 | |
import seaborn as sns | |
import numpy as np | |
import matplotlib.pyplot as plt | |
# 准备数据 | |
np.random.seed(123) | |
data = np.hstack((np.random.normal(loc=0, scale=1, size=100), | |
np.random.normal(loc=3, scale=1.5, size=100))) | |
# 绘制核密度图 | |
sns.set(style="whitegrid") | |
sns.kdeplot(data, shade=True, color="g", bw_adjust=0.5) | |
plt.title('核密度图示例') | |
plt.xlabel('值') | |
plt.show() |
3. 原理
KDE的基本思想是将每个数据点视为一个核函数(如高斯核)的中心,然后计算所有核函数的加权和,得到整个数据集的密度分布曲线。核函数的带宽(bw
)是一个重要的参数,它决定了核函数的平滑程度,进而影响密度分布曲线的形状。
三、小提琴图(Violin Plot)
1. 基本概念
小提琴图(Violin Plot)是一种结合了箱线图(Box Plot)和密度图(Density Plot)特点的图表。它使用核密度估计来展示数据的分布形态,同时保留了箱线图表示数据四分位数和异常值的功能。
2. 绘制方法
在Seaborn中,可以使用violinplot
函数绘制小提琴图。
案例:
# 导入必要的库 | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
import numpy as np | |
import pandas as pd | |
# 设置随机种子以便结果可重复 | |
np.random.seed(123) | |
# 准备数据 | |
group = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'] | |
*10, # 列表扩展,但直接这样写是语法错误,用实际的数值代替 | |
values = np.concatenate([np.random.normal(loc=0, scale=1, size=100), | |
np.random.normal(loc=1, scale=1.5, size=100), | |
np.random.normal(loc=2, scale=0.75, size=100)]) | |
# 将数据和组别合并到一个DataFrame中 | |
df = pd.DataFrame({'Group': group * 3, # 假设每个组都有相同数量的观测值 | |
'Value': values}) | |
# 直接使用df中的'Group'列 | |
# 绘制小提琴图 | |
plt.figure(figsize=(10, 6)) # 设置图形大小 | |
sns.violinplot(x='Group', y='Value', data=df, palette="Set2") | |
plt.title('小提琴图示例') | |
plt.xlabel('组别') | |
plt.ylabel('值') | |
plt.show() |
3. 原理
小提琴图的绘制原理与KDE类似,都是基于核密度估计。不同的是,小提琴图将KDE曲线绘制成类似小提琴的形状,以更直观地展示数据的分布形态。同时,小提琴图内部还会绘制箱线图的元素(如中位数、四分位数等),以提供额外的统计信息。