【数据分析与可视化】Seaborn中常用绘图模型讲解及实战(图文解释 附源码)

简介: 【数据分析与可视化】Seaborn中常用绘图模型讲解及实战(图文解释 附源码)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

1. 直方图和密度曲线图

Seaborn中利用distplot( )和 kdeplot( )绘制直方图和密度曲线图,distplot( )为hist加强版,默认情况下绘制一个直方图,并嵌套一个对应的密度图

例:绘制iris数据集中Petal.Width的分布图

import matplotlib.pyplot as plt
import pandas as pd
df_iris = pd.read_csv('data//iris.csv')
# df_iris.head()
sns.set(color_codes = True)
sns.distplot(df_iris['Petal.Width'])

使用distplot方法绘制的直方图与matplotlib是类似的。在distplot的参数中,可以选择不绘制密度图。其中的rug参数绘制毛毯图,可以为每个观测值绘制小细线(边际毛毯),也可以单独用rugplot进行绘制

distplot方法绘制的直方图

sns.distplot(df_iris['Petal.Width'],bins = 30,kde = False,rug = True)

直接绘制密度图

如果设置hist为False,则可以直接绘制密度图而没有直方图

sns.distplot(df_iris['Petal.Width'],hist = False,rug = True)

利用distplot函数可以同时绘制直方图、密度图和毛毯图,同时,这些分布图都有对应的专门函数。其中,kdeplot函数绘制密度图,rugplot用于绘制毛毯图

import matplotlib.pyplot as plt
df_iris=pd.read_csv('D:\dataset\iris.csv')
fig,axes=plt.subplots(1,2)
sns.distplot(df_iris['Petal.Length'],ax=axes[0],kde=True,rug=True)
 #kde密度曲线,rug边际毛毯
sns.kdeplot(df_iris['Petal.Length'],ax=axes[1],shade=True)  #shade阴影
plt.show()

distplot绘图

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
sns.set(palette = "muted",color_codes = True)
rs = np.random.RandomState(10)
d = rs.normal(size = 100)
f,axes = plt.subplots(2, 2, figsize = (7, 7), sharex = True)
sns.distplot(d, kde = False, color = "b", ax = axes[0,0])
sns.distplot(d, hist = False, rug = True, color = "r", ax = axes[0,1])
sns.distplot(d, hist = False,color = "g", kde_kws = {"shade":True}, ax = axes[1,0])
sns.distplot(d, color = "m", ax = axes[1,1])
plt.show()

2. 散点图

在Seaborn中,利用stripplot绘制各变量在每个类别的值。 例:在iris数据集中,显示Petal.Width在Species上值的分布

sns.set(style='white',color_codes=True) #设置样式 
sns.stripplot(x=df_iris['Species'],y= df_iris['Petal.Width'],data=df_iris)
sns.despine()   #去坐标轴

由于散点图中数据众多,很多点会被覆盖,这时可以加入抖动(jitter=True)

如果需要看清每个数据点,可以使用swarmplot函数

sns.swarmplot(x=df_iris['Species'],y= df_iris['Petal.Width'],data=df_iris)
sns.despine()   #去坐标轴

3. 箱线图

有时候,散点图表达的值的分布信息有限,因此需要一些其它的绘图。箱线图可以观察四分位数、中位数和极值。Seaborn中利用boxplot( )绘制箱线图

df_iris=pd.read_csv('D:\dataset\iris.csv')
sns.boxplot(x=df_iris['Species'],y = df_iris['Petal.Width'])  
plt.show()

4. 散点图矩阵

在seaborn中利用 pairplot()实现数据特征的两两对比。默认是所有特征,可以通过vars参数指定部分特征

seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)

pairplot主要展现的是变量两两之间的关系(线性或非线性,有无较为明显的相关关系)

df_iris = pd.read_csv('data//iris.csv')
sns.set(style = "ticks")  
g = sns.pairplot(df_iris,vars = ['Sepal.Length', 'Petal.Length'])

5. 小提琴图

小提琴图其实是箱线图与核密度图的结合,箱线图展示了分位数的位置,小提琴图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高。在图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须。外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一)

sns.set_style("whitegrid")
df_iris=pd.read_csv('D:\dataset\iris.csv')
ax = sns.violinplot(x=df_iris['Petal.Length'])

6. 柱状图

在Seaborn中使用barplot函数绘制柱状图,默认情况下,绘制的y轴是平均值

df_iris=pd.read_csv('D:\dataset\iris.csv')
sns.barplot(x=df_iris['Species'],y=df_iris['Petal.Length'],data=df_iris)

在柱状图中,经常会绘制类别的计数柱状图,在matplotlib中需要对DataFrame进行计算,而在Seaborn中则使用countplot函数即可

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid",font_scale=1.2)
titanic = sns.load_dataset("titanic")
plt.subplot(1,2,1)
sns.countplot(x="class", hue="who", data=titanic)
plt.subplot(1,2,2)
sns.countplot(x="who", data=titanic,
              facecolor=(0, 0, 0, 0),
              linewidth=5,
              edgecolor=sns.color_palette("dark", 3))
plt.show()

7. 多变量图

在matplotlib中,为了绘制两个变量的分布关系,常使用散点图的方法。在Seaborn中,使用jointplot函数绘制一个多面板图,不仅可以显示两个变量的关系,还可以显示每个单变量的分布情况

sns.jointplot(x='Petal.Length',y='Petal.Width' ,data=df_iris)

在jointplot函数中,改变kind参数为kde,但变量的分布就用密度图来代替,而散点图则会被等高线图代替

sns.jointplot(x='Petal.Length',y='Petal.Width' ,data=df_iris,kind='kde')

8. 回归图

绘制回归图可以揭示两个变量间的线性关系。Seaborn中,使用regplot函数绘制回归图

sns.regplot(x='Petal.Length',y='Petal.Width' ,data=df_iris)

9. 关系类图

Seaborn中的relplot方法关注的是统计量之间的关系,利用kind参数设置,可以绘制出曲线图和散点图。Relplot方法的必选参数有以下几个: x,y为数据中变量的名称,一般为数值型数据

data是DataFrame类型的数据表;kind指定绘图类型,取值为“scatter”相当于scatterplot(),用来绘制散点图,取值“line”相当于lineplot(),用来绘制曲线。Kind缺省取值为"scatter"

绘制tips数据集中小费总额和小费的关系图

import seaborn as sns
tips = sns.load_dataset('tips') 
sns.set(style="ticks",font_scale=1.5)
sns.relplot(x="total_bill", y="tip", data=tips) 
# g = sns.relplot(x="total_bill", y="tip", hue="day", data=tips)
g = sns.relplot(x="total_bill", y="tip",hue="day", col="time", data=tips)

10. 热力图

热力图是数据可视化项目中比较常用的数据显示方式。热力图通过颜色变化程度直观反应出热点分布,区域聚集等数据信息。热力图实现过程就是通过简单的数学变化,将离散的点信息映射为图像

下面绘制flights数据集中年份 月份和乘客数据的热力图

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
5月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
633 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
【数据分析】基于matlab私家车充电模型(含私家车日行驶距离概率密度及累加函数,电动汽车出发时间(或者称开始充电的时间)概率)(Matlab代码实现)
114 0
|
10月前
|
SQL JSON 数据可视化
基于 DIFY 的自动化数据分析实战
本文介绍如何使用DIFY搭建数据分析自动化流程,实现从输入需求到查询数据库、LLM分析再到可视化输出的全流程。基于经典的employees数据集和DIFY云端环境,通过LLM-SQL解析、SQL执行、LLM数据分析及ECharts可视化等模块,高效完成数据分析任务。此方案适用于人力资源分析、薪酬管理等数据密集型业务,显著提升效率并降低成本。
13950 16
|
9月前
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
1236 2
|
10月前
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
9月前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
916 0
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
387 5
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
859 4
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
257 2
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
359 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析