如何利用 Seaborn 实现高级统计图表
本文分享自华为云社区《使用 Seaborn 实现高级统计图表从箱线图到多变量关系探索》 ,作者:柠檬味拥抱。
在数据科学和数据可视化领域,Seaborn 是一个备受欢迎的 Python 可视化库。它建立在 Matplotlib 的基础之上,提供了更简洁、更美观的图形界面,同时也具备了一些高级统计图表的功能。本文将介绍如何利用 Seaborn 实现一些高级统计图表,并提供相应的代码示例。
安装 Seaborn
首先,确保你已经安装了 Seaborn。你可以使用 pip 进行安装:
pip install seaborn
导入必要的库
在开始之前,我们需要导入 Seaborn 以及其他一些常用的数据处理和可视化库:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
箱线图(Box Plot)
箱线图是一种常用的统计图表,用于显示数据的分布情况。Seaborn 提供了简单易用的接口来绘制箱线图。
# 生成随机数据
np.random.seed(0)
data = np.random.normal(loc=0, scale=1, size=100) # 绘制箱线图
sns.boxplot(data=data)
plt.title('Box Plot of Random Data')
plt.show()
在这个例子中,我们生成了一组随机数据,并使用 sns.boxplot()
函数绘制了箱线图。通过这个图表,我们可以直观地了解数据的分布情况,包括中位数、四分位数以及异常值的情况。
小提琴图(Violin Plot)
小提琴图是一种结合了箱线图和核密度估计的图表,可以更直观地展示数据的分布情况。
# 生成随机数据
np.random.seed(0)
data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=2, scale=1.5, size=100)
data = np.concatenate([data1, data2])
labels = ['Group 1'] * 100 + ['Group 2'] * 100 # 绘制小提琴图
sns.violinplot(x=labels, y=data)
plt.title('Violin Plot of Two Groups')
plt.show()
在这个例子中,我们生成了两组不同的随机数据,并使用 sns.violinplot()
函数绘制了小提琴图。通过这个图表,我们可以比较两组数据的分布情况,并观察其差异。
热力图(Heatmap)
热力图是一种用颜色表示数据矩阵的图表,常用于显示相关性或者数据密度。
# 生成随机数据
np.random.seed(0)
data = np.random.rand(10, 10) # 绘制热力图
sns.heatmap(data, annot=True, cmap='viridis')
plt.title('Heatmap of Random Data')
plt.show()
在这个例子中,我们生成了一个随机的 10x10 矩阵,并使用 sns.heatmap()
函数绘制了热力图。通过这个图表,我们可以直观地了解数据之间的相关性以及数据的分布情况。
核密度估计图(Kernel Density Estimation Plot)
核密度估计图是一种用于估计数据密度函数的非参数方法,通过平滑观测数据,生成一个连续的概率密度曲线。
# 生成随机数据
np.random.seed(0)
data = np.random.normal(loc=0, scale=1, size=100) # 绘制核密度估计图
sns.kdeplot(data, shade=True)
plt.title('Kernel Density Estimation Plot of Random Data')
plt.show()
在这个例子中,我们生成了一组随机数据,并使用 sns.kdeplot()
函数绘制了核密度估计图。这个图表展示了数据的概率密度分布情况,帮助我们更好地理解数据的分布特征。
成对关系图(Pair Plot)
成对关系图是一种用于可视化数据集中变量之间关系的图表,对于探索性数据分析非常有用。
# 生成随机数据集
np.random.seed(0)
data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D']) # 绘制成对关系图
sns.pairplot(data)
plt.suptitle('Pair Plot of Random Data', y=1.02)
plt.show()
在这个例子中,我们生成了一个随机的数据集,并使用 sns.pairplot()
函数绘制了成对关系图。这个图表展示了数据集中每两个变量之间的关系,包括散点图和单变量分布图,有助于发现变量之间的模式和相关性。
聚类图(Cluster Map)
聚类图是一种用于展示数据集中变量之间相似性的图表,通过聚类算法将相似的变量分组显示。
# 生成随机数据集
np.random.seed(0)
data = pd.DataFrame(np.random.rand(10, 10), columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']) # 绘制聚类图
sns.clustermap(data, cmap='viridis')
plt.title('Cluster Map of Random Data')
plt.show()
在这个例子中,我们生成了一个随机的数据集,并使用 sns.clustermap()
函数绘制了聚类图。这个图表展示了数据集中变量之间的相似性,通过聚类算法将相似的变量分组显示,有助于发现变量之间的模式和结构。
聚类热图(Clustermap)
聚类热图是一种基于层次聚类算法的热力图,它将数据进行聚类并按照聚类结果重新排列,以便更好地展示数据的结构和关联性。
# 生成随机数据
np.random.seed(0)
data = np.random.rand(10, 10) # 绘制聚类热图
sns.clustermap(data, cmap='coolwarm')
plt.title('Clustermap of Random Data')
plt.show()
在这个例子中,我们生成了一个随机的 10x10 矩阵,并使用 sns.clustermap()
函数绘制了聚类热图。通过这个图表,我们可以清晰地看到数据之间的聚类关系,以及不同数据点之间的相似性。
分类散点图(Pairplot)
分类散点图是一种同时显示多个变量之间关系的图表,常用于探索数据集中不同变量之间的关联性。
# 加载示例数据集
iris = sns.load_dataset('iris') # 绘制分类散点图
sns.pairplot(iris, hue='species', markers=['o', 's', 'D'])
plt.title('Pairplot of Iris Dataset')
plt.show()
在这个例子中,我们使用 Seaborn 自带的鸢尾花数据集,并使用 sns.pairplot()
函数绘制了分类散点图。通过这个图表,我们可以一眼看出不同鸢尾花种类之间的特征差异,以及不同特征之间的相关性。
时间序列图(Time Series Plot)
时间序列图是一种用于展示时间序列数据的图表,常用于分析数据随时间变化的趋势和周期性。
# 生成时间序列数据
dates = pd.date_range(start='2022-01-01', end='2022-12-31')
data = np.random.randn(len(dates)) # 创建 DataFrame
df = pd.DataFrame({'Date': dates, 'Value': data}) # 绘制时间序列图
sns.lineplot(x='Date', y='Value', data=df)
plt.title('Time Series Plot of Random Data')
plt.xlabel('Date')
plt.ylabel('Value')
plt.show()
在这个例子中,我们生成了一个随机的时间序列数据,并使用 sns.lineplot()
函数绘制了时间序列图。通过这个图表,我们可以清晰地看到数据随时间变化的趋势和周期性。
进阶调色板(Advanced Color Palettes)
Seaborn 提供了丰富的调色板功能,可以帮助用户在图表中选择合适的颜色方案,以突出重点或增强可视化效果。
# 使用进阶调色板
current_palette = sns.color_palette('husl', 5) # 绘制柱状图
sns.barplot(x=np.arange(5), y=np.random.rand(5), palette=current_palette)
plt.title('Bar Plot with Advanced Color Palette')
plt.show()
在这个例子中,我们使用了 sns.color_palette()
函数来选择 Husl 调色板,并生成了一个包含 5 种颜色的调色板。然后,我们使用这个调色板来绘制了一个柱状图,以展示其效果。
自定义图表样式(Customized Plot Styles)
Seaborn 允许用户通过设置不同的样式来定制图表外观,以满足个性化的需求。
# 设置自定义样式
sns.set_style('whitegrid') # 绘制散点图
sns.scatterplot(x=np.random.randn(100), y=np.random.randn(100))
plt.title('Scatter Plot with Customized Style')
plt.show()
在这个例子中,我们使用了 sns.set_style()
函数将图表样式设置为白色网格,并绘制了一个散点图来展示其效果。
多面板绘图(Facet Grids)
Seaborn 提供了多面板绘图的功能,可以同时展示多个子图,以便更好地比较不同子集之间的关系。
# 加载示例数据集
tips = sns.load_dataset('tips') # 创建 FacetGrid 对象
g = sns.FacetGrid(tips, col='time', row='smoker') # 绘制小提琴图
g.map(sns.violinplot, 'total_bill')
plt.show()
在这个例子中,我们使用 sns.FacetGrid()
函数创建了一个 FacetGrid 对象,并在不同的子图中绘制了小提琴图,以展示不同子集之间的数据分布情况。
数据分布比较(Distribution Comparison)
Seaborn 提供了多种方法来比较不同数据分布之间的差异,例如使用核密度估计或直方图。
# 加载示例数据集
iris = sns.load_dataset('iris') # 绘制核密度估计图
sns.kdeplot(data=iris, x='sepal_length', hue='species', fill=True)
plt.title('Distribution Comparison of Sepal Length')
plt.show()
在这个例子中,我们使用 sns.kdeplot()
函数绘制了鸢尾花数据集中不同种类之间萼片长度的核密度估计图,以比较它们的分布情况。
数据分组展示(Grouped Visualization)
Seaborn 可以方便地展示数据的分组情况,例如利用分类变量对数据进行分组并进行可视化。
# 加载示例数据集
titanic = sns.load_dataset('titanic') # 绘制分类箱线图
sns.boxplot(data=titanic, x='class', y='age', hue='sex')
plt.title('Grouped Box Plot of Age by Class and Sex')
plt.show()
在这个例子中,我们使用 sns.boxplot()
函数绘制了泰坦尼克号数据集中不同船舱等级和性别对年龄的影响,以比较它们的分布情况。
多变量关系探索(Exploring Multivariate Relationships)
Seaborn 提供了多种方法来探索多变量之间的关系,例如利用散点图矩阵或成对关系图。
# 加载示例数据集
iris = sns.load_dataset('iris') # 绘制散点图矩阵
sns.pairplot(data=iris, hue='species')
plt.title('Pairplot for Exploring Multivariate Relationships')
plt.show()
在这个例子中,我们使用 sns.pairplot()
函数绘制了鸢尾花数据集中不同特征之间的成对关系图,以探索它们之间的多变量关系。
总结
本文介绍了如何利用 Seaborn 实现高级统计图表,并提供了丰富的代码示例。首先,我们学习了如何绘制常见的统计图表,包括箱线图、小提琴图、热力图等,通过这些图表可以直观地展示数据的分布和关联性。接着,我们探讨了进阶功能,如调色板、自定义图表样式、多面板绘图等,这些功能可以帮助用户定制化图表外观,增强可视化效果。然后,我们介绍了一些高级应用,如数据分布比较、数据分组展示、多变量关系探索等,这些方法可以帮助用户更深入地理解数据之间的关系和规律。通过本文的学习,读者可以掌握使用 Seaborn 进行数据可视化的基本技能,并能够运用其丰富的功能和灵活的接口进行数据分析和探索工作。 Seaborn 的强大功能和简洁接口使其成为数据科学家和分析师的不可或缺的工具之一。
如何利用 Seaborn 实现高级统计图表的更多相关文章
- 使用Google Closure Compiler高级压缩Javascript代码注意的几个地方
介绍 GCC(Google Closure Compiler)是由谷歌发布的Js代码压缩编译工具.它可以做到分析Js的代码,移除不需要的代码(dead code),并且去重写它,最后再进行压缩. 三种 ...
- Google Closure Compiler高级压缩混淆Javascript代码
一.背景 前端开发中,特别是移动端,Javascript代码压缩已经成为上线必备条件. 如今主流的Js代码压缩工具主要有: 1)Uglify http://lisperator.net/uglifyj ...
- 7. Vulnerability exploitation tools (漏洞利用工具 11个)
Metasploit于2004年发布时,将风暴带入了安全世界.它是开发,测试和使用漏洞利用代码的高级开源平台. 可以将有效载荷,编码器,无操作生成器和漏洞利用的可扩展模型集成在一起,使得Metaspl ...
- @Qualifier高级应用---按类别批量依赖注入【享学Spring】
每篇一句 罗斯:选秀状元可能有水货,但MVP绝对没有 前言 在上篇文章(讲解@LoadBalanced负载均衡)的末尾,我抛出了一个很重要的问题,建议小伙伴自己深入思考一番:本文主要针对此问题,作出一 ...
- Python统计分析可视化库seaborn(相关性图,变量分布图,箱线图等等)
Visualization of seaborn seaborn[1]是一个建立在matplot之上,可用于制作丰富和非常具有吸引力统计图形的Python库.Seaborn库旨在将可视化作为探索和理 ...
- Python Seaborn综合指南,成为数据可视化专家
概述 Seaborn是Python流行的数据可视化库 Seaborn结合了美学和技术,这是数据科学项目中的两个关键要素 了解其Seaborn作原理以及使用它生成的不同的图表 介绍 一个精心设计的可视化 ...
- seaborn库中柱状图绘制详解
柱状图用于反映数值变量的集中趋势,用误差线估计变量的差值统计.理解误差线有助于我们准确的获取柱状图反映的信息,因此打算先介绍一下误差线方面的内容,然后介绍一下利用seaborn库绘制柱状图. 1.误差 ...
- 使用Google Closure Compiler高级压缩Javascript代码
背景 前端开发中,特别是移动端,Javascript代码压缩已经成为上线必备条件. 如今主流的Js代码压缩工具主要有: 1)Uglify http://lisperator.net/uglifyjs/ ...
- 图形报表 webChart.dll 以及其它的图形报表控件 (转)
http://www.carlosag.net/Tools/WebChart/sampleDataSet.aspx http://www.carlosag.net/Tools/WebChart/sam ...
- Python 数据图表工具的比较
Python 的科学栈相当成熟,各种应用场景都有相关的模块,包括机器学习和数据分析.数据可视化是发现数据和展示结果的重要一环,只不过过去以来,相对于 R 这样的工具,发展还是落后一些. 幸运的是,过去 ...
随机推荐
- CircleIndicator组件,使指示器风格更加多样化
UI界面是应用程序可视化必不可少的部分.设计精致的UI界面可以使得整个可视化应用程序给用户留下深刻的印象,是改善用户界面体验最直接的方式. ArkUI开发框架为开发者提供了丰富的UI原生组件,如Nav ...
- C#中操作Excel
在GIS数据处理中,经常遇到与Excel的交互,这里进行简单的总结. Excel行列号就像是编辑中的二维数据组,操作Excel相当于操作二维数组.遍历.循环.取值.赋值-- 1.添加引用 添加引用也有 ...
- 医疗BI系统如何使医疗行业完成精细化管理转型?
不久前在北京召开的全国医疗管理工作会议,确定了今年的医疗管理工作重点.会议强调,推动医疗管理改革工作的过程中要对形势.规律准确把握,积极应对可能面临的挑战,以"三个转变.三个提高" ...
- amcap使用方法
1.选择设备 device 里面显示的是设备,分割线上面是视频设备,分割线下面是音频设备 2.打开图像 options > Preview 勾选上就是打开视频,再次点击取消勾线就是关闭视频 3 ...
- 重磅:FPGA实现MIPI DSI4线720P
1. 液晶屏概述 显示屏LCD MIPI DSI4 lane,支持分辨率720*1280,60HZ彩色显示.用于对接国产GOWIN的NR-9C的开发板和LATTICE的CROSSLINK开发板,显示M ...
- 国产gowin开发板GW1NR-9K的PSRAM使用说明
开发板子采用GW1NNR-LV9LQ144PC6/I5 FPGA器件.具有低功耗,瞬时启动,高安全性,低成本,方便扩展等特点.本开发板价格价格便宜,板子扩张性容易,帮助用户比较快速进入国产FPGA学习 ...
- RocketMQ 5.0: 存储计算分离新思路
简介: 在阿里云上,RocketMQ 的商业化产品也以弹性云服务的形式为全球数万个用户提供企业级的消息解决方案,被广泛应用于互联网.大数据.移动互联网.物联网等领域的业务场景,成为了业务开发的首选消息 ...
- [FAQ] MEMORY ALLOC FAILED: mmap with HUGETLB failed, attempting without it (you should fix your kernel)
cat /proc/meminfo | grep Huge sysctl vm.nr_hugepages=128 cat /proc/meminfo | grep Huge Link:https:// ...
- WPF 通过 EXIF 设置和读取图片的旋转信息
本文将告诉大家如何在 WPF 里面设置图片的 EXIF 信息,包括如何设置图片的旋转信息,以及如何读取 EXIF 的内容 值得一提的是在 WPF 里面,默认的图片渲染信息是无视 System.Phot ...
- 提示工程(Prompt Engineering)将ChatGPT调教为傲娇猫娘~喵
Prompt Engineering(提示工程)是指通过设计精心构造的提示(prompt)或者输入,来引导大型语言模型生成特定类型的输出.这个技术背后的原理是利用模型对输入的敏感性,通过提供特定格式或 ...