如何利用 Seaborn 实现高级统计图表

打印 上一主题 下一主题

主题 676|帖子 676|积分 2028

本文分享自华为云社区《利用 Seaborn 实现高级统计图表从箱线图到多变量关系探索》 ,作者:柠檬味拥抱。
在数据科学和数据可视化范畴,Seaborn 是一个备受欢迎的 Python 可视化库。它建立在 Matplotlib 的基础之上,提供了更轻便、更雅观的图形界面,同时也具备了一些高级统计图表的功能。本文将先容如何利用 Seaborn 实现一些高级统计图表,并提供相应的代码示例。
安装 Seaborn

首先,确保你已经安装了 Seaborn。你可以利用 pip 进行安装:
  1. pip install seaborn
复制代码
导入必要的库

在开始之前,我们必要导入 Seaborn 以及其他一些常用的数据处置惩罚和可视化库:
  1. import seaborn as sns
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. import pandas as pd
复制代码
箱线图(Box Plot)

箱线图是一种常用的统计图表,用于显示数据的分布情况。Seaborn 提供了简单易用的接口来绘制箱线图。
  1. # 生成随机数据
  2. np.random.seed(0)
  3. data = np.random.normal(loc=0, scale=1, size=100)
  4. # 绘制箱线图
  5. sns.boxplot(data=data)
  6. plt.title('Box Plot of Random Data')
  7. plt.show()
复制代码
在这个例子中,我们生成了一组随机数据,并利用 sns.boxplot() 函数绘制了箱线图。通过这个图表,我们可以直观地了解数据的分布情况,包括中位数、四分位数以及非常值的情况。
小提琴图(Violin Plot)

小提琴图是一种联合了箱线图和核密度估计的图表,可以更直观地展示数据的分布情况。
  1. # 生成随机数据
  2. np.random.seed(0)
  3. data1 = np.random.normal(loc=0, scale=1, size=100)
  4. data2 = np.random.normal(loc=2, scale=1.5, size=100)
  5. data = np.concatenate([data1, data2])
  6. labels = ['Group 1'] * 100 + ['Group 2'] * 100
  7. # 绘制小提琴图
  8. sns.violinplot(x=labels, y=data)
  9. plt.title('Violin Plot of Two Groups')
  10. plt.show()
复制代码
在这个例子中,我们生成了两组差别的随机数据,并利用 sns.violinplot() 函数绘制了小提琴图。通过这个图表,我们可以比较两组数据的分布情况,并观察其差异。
热力图(Heatmap)

热力图是一种用颜色表示数据矩阵的图表,常用于显示相关性大概数据密度。
  1. # 生成随机数据
  2. np.random.seed(0)
  3. data = np.random.rand(10, 10)
  4. # 绘制热力图
  5. sns.heatmap(data, annot=True, cmap='viridis')
  6. plt.title('Heatmap of Random Data')
  7. plt.show()
复制代码
在这个例子中,我们生成了一个随机的 10x10 矩阵,并利用 sns.heatmap() 函数绘制了热力图。通过这个图表,我们可以直观地了解数据之间的相关性以及数据的分布情况。
核密度估计图(Kernel Density Estimation Plot)

核密度估计图是一种用于估计数据密度函数的非参数方法,通过平滑观测数据,生成一个连续的概率密度曲线。
  1. # 生成随机数据
  2. np.random.seed(0)
  3. data = np.random.normal(loc=0, scale=1, size=100)
  4. # 绘制核密度估计图
  5. sns.kdeplot(data, shade=True)
  6. plt.title('Kernel Density Estimation Plot of Random Data')
  7. plt.show()
复制代码
在这个例子中,我们生成了一组随机数据,并利用 sns.kdeplot() 函数绘制了核密度估计图。这个图表展示了数据的概率密度分布情况,帮助我们更好地明确数据的分布特征。
成对关系图(Pair Plot)

成对关系图是一种用于可视化数据集中变量之间关系的图表,对于探索性数据分析非常有用。
  1. # 生成随机数据集
  2. np.random.seed(0)
  3. data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])
  4. # 绘制成对关系图
  5. sns.pairplot(data)
  6. plt.suptitle('Pair Plot of Random Data', y=1.02)
  7. plt.show()
复制代码
在这个例子中,我们生成了一个随机的数据集,并利用 sns.pairplot() 函数绘制了成对关系图。这个图表展示了数据集中每两个变量之间的关系,包括散点图和单变量分布图,有助于发现变量之间的模式和相关性。
聚类图(Cluster Map)

聚类图是一种用于展示数据集中变量之间相似性的图表,通过聚类算法将相似的变量分组显示。
  1. # 生成随机数据集
  2. np.random.seed(0)
  3. data = pd.DataFrame(np.random.rand(10, 10), columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'])
  4. # 绘制聚类图
  5. sns.clustermap(data, cmap='viridis')
  6. plt.title('Cluster Map of Random Data')
  7. plt.show()
复制代码
在这个例子中,我们生成了一个随机的数据集,并利用 sns.clustermap() 函数绘制了聚类图。这个图表展示了数据集中变量之间的相似性,通过聚类算法将相似的变量分组显示,有助于发现变量之间的模式和结构。
聚类热图(Clustermap)

聚类热图是一种基于层次聚类算法的热力图,它将数据进行聚类并按照聚类结果重新排列,以便更好地展示数据的结构和关联性。
  1. # 生成随机数据
  2. np.random.seed(0)
  3. data = np.random.rand(10, 10)
  4. # 绘制聚类热图
  5. sns.clustermap(data, cmap='coolwarm')
  6. plt.title('Clustermap of Random Data')
  7. plt.show()
复制代码
在这个例子中,我们生成了一个随机的 10x10 矩阵,并利用 sns.clustermap() 函数绘制了聚类热图。通过这个图表,我们可以清晰地看到数据之间的聚类关系,以及差别数据点之间的相似性。
分类散点图(Pairplot)

分类散点图是一种同时显示多个变量之间关系的图表,常用于探索数据集中差别变量之间的关联性。
  1. # 加载示例数据集
  2. iris = sns.load_dataset('iris')
  3. # 绘制分类散点图
  4. sns.pairplot(iris, hue='species', markers=['o', 's', 'D'])
  5. plt.title('Pairplot of Iris Dataset')
  6. plt.show()
复制代码
在这个例子中,我们利用 Seaborn 自带的鸢尾花数据集,并利用 sns.pairplot() 函数绘制了分类散点图。通过这个图表,我们可以一眼看出差别鸢尾花种类之间的特征差异,以及差别特征之间的相关性。
时间序列图(Time Series Plot)

时间序列图是一种用于展示时间序列数据的图表,常用于分析数据随时间变革的趋势和周期性。
  1. # 生成时间序列数据
  2. dates = pd.date_range(start='2022-01-01', end='2022-12-31')
  3. data = np.random.randn(len(dates))
  4. # 创建 DataFrame
  5. df = pd.DataFrame({'Date': dates, 'Value': data})
  6. # 绘制时间序列图
  7. sns.lineplot(x='Date', y='Value', data=df)
  8. plt.title('Time Series Plot of Random Data')
  9. plt.xlabel('Date')
  10. plt.ylabel('Value')
  11. plt.show()
复制代码
在这个例子中,我们生成了一个随机的时间序列数据,并利用 sns.lineplot() 函数绘制了时间序列图。通过这个图表,我们可以清晰地看到数据随时间变革的趋势和周期性。
进阶调色板(Advanced Color Palettes)

Seaborn 提供了丰富的调色板功能,可以帮助用户在图表中选择合适的颜色方案,以突出重点或增强可视化效果。
  1. # 使用进阶调色板
  2. current_palette = sns.color_palette('husl', 5)
  3. # 绘制柱状图
  4. sns.barplot(x=np.arange(5), y=np.random.rand(5), palette=current_palette)
  5. plt.title('Bar Plot with Advanced Color Palette')
  6. plt.show()
复制代码
在这个例子中,我们利用了 sns.color_palette() 函数来选择 Husl 调色板,并生成了一个包罗 5 种颜色的调色板。然后,我们利用这个调色板来绘制了一个柱状图,以展示其效果。
自定义图表样式(Customized Plot Styles)

Seaborn 答应用户通过设置差别的样式来定制图表外观,以满足个性化的需求。
  1. # 设置自定义样式
  2. sns.set_style('whitegrid')
  3. # 绘制散点图
  4. sns.scatterplot(x=np.random.randn(100), y=np.random.randn(100))
  5. plt.title('Scatter Plot with Customized Style')
  6. plt.show()
复制代码
在这个例子中,我们利用了 sns.set_style() 函数将图表样式设置为白色网格,并绘制了一个散点图来展示其效果。
多面板画图(Facet Grids)

Seaborn 提供了多面板画图的功能,可以同时展示多个子图,以便更好地比较差别子集之间的关系。
  1. # 加载示例数据集
  2. tips = sns.load_dataset('tips')
  3. # 创建 FacetGrid 对象
  4. g = sns.FacetGrid(tips, col='time', row='smoker')
  5. # 绘制小提琴图
  6. g.map(sns.violinplot, 'total_bill')
  7. plt.show()
复制代码
在这个例子中,我们利用 sns.FacetGrid() 函数创建了一个 FacetGrid 对象,并在差别的子图中绘制了小提琴图,以展示差别子集之间的数据分布情况。
数据分布比较(Distribution Comparison)

Seaborn 提供了多种方法来比较差别数据分布之间的差异,比方利用核密度估计或直方图。
  1. # 加载示例数据集
  2. iris = sns.load_dataset('iris')
  3. # 绘制核密度估计图
  4. sns.kdeplot(data=iris, x='sepal_length', hue='species', fill=True)
  5. plt.title('Distribution Comparison of Sepal Length')
  6. plt.show()
复制代码
在这个例子中,我们利用 sns.kdeplot() 函数绘制了鸢尾花数据集中差别种类之间萼片长度的核密度估计图,以比较它们的分布情况。
数据分组展示(Grouped Visualization)

Seaborn 可以方便地展示数据的分组情况,比方利用分类变量对数据进行分组并进行可视化。
  1. # 加载示例数据集
  2. titanic = sns.load_dataset('titanic')
  3. # 绘制分类箱线图
  4. sns.boxplot(data=titanic, x='class', y='age', hue='sex')
  5. plt.title('Grouped Box Plot of Age by Class and Sex')
  6. plt.show()
复制代码
在这个例子中,我们利用 sns.boxplot() 函数绘制了泰坦尼克号数据集中差别船舱等级和性别对年龄的影响,以比较它们的分布情况。
多变量关系探索(Exploring Multivariate Relationships)

Seaborn 提供了多种方法来探索多变量之间的关系,比方利用散点图矩阵或成对关系图。
  1. # 加载示例数据集
  2. iris = sns.load_dataset('iris')
  3. # 绘制散点图矩阵
  4. sns.pairplot(data=iris, hue='species')
  5. plt.title('Pairplot for Exploring Multivariate Relationships')
  6. plt.show()
复制代码
在这个例子中,我们利用 sns.pairplot() 函数绘制了鸢尾花数据集中差别特征之间的成对关系图,以探索它们之间的多变量关系。
总结

本文先容了如何利用 Seaborn 实现高级统计图表,并提供了丰富的代码示例。首先,我们学习了如何绘制常见的统计图表,包括箱线图、小提琴图、热力图等,通过这些图表可以直观地展示数据的分布和关联性。接着,我们探究了进阶功能,如调色板、自定义图表样式、多面板画图等,这些功能可以帮助用户定制化图表外观,增强可视化效果。然后,我们先容了一些高级应用,如数据分布比较、数据分组展示、多变量关系探索等,这些方法可以帮助用户更深入地明确数据之间的关系和规律。通过本文的学习,读者可以把握利用 Seaborn 进行数据可视化的根本技能,并可以或许运用其丰富的功能和机动的接口进行数据分析和探索工作。 Seaborn 的强大功能和轻便接口使其成为数据科学家和分析师的不可或缺的工具之一。
 
点击关注,第一时间了解华为云奇怪技能~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表