数据分析——seaborn可视化(笔记自用)

这篇具有很好参考价值的文章主要介绍了数据分析——seaborn可视化(笔记自用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 参考内容

 【Python】一小时带你掌握seaborn可视化_哔哩哔哩_bilibili


目录

一、变量分布 

1、查看异常值 

2、观察变量分布 

3、figure-level functions具有FacetGrid特性 

二、数值变量的关系分析 

1、sns.relplot():

2、sns.lmplot():分析两个变量的线性关系

3、sns.displot():绘制两个变量的联合分布

4、sns.jointplot():绘制两个变量的联合分布和各自分布

 (1)sns.jointplot()

(2)jointplot的升级版:JointGrid,可通过g.plot自定义函数

 (3)sns.pairplot():成对绘制所有数值变量的联合分布

 (4)pairplot的升级版:PairGrid,可通过g.map自定义函数

  (5)data.corr()+sns.heatmap():成对绘制所有数值变量的相关系数

 三、类别变量的分析

 1、类别变量的分布:sns.countplot(),类似sns.histplot()

 2、类别变量与数值变量的关系

(1)不同类别中数值变量的均值/中值估计:barplot, pointplot

(2)不同类别中数值变量的取值范围:boxplot, boxenplot

(3)不同类别中数值变量的分布图:stripplot, swarmplot, violinplot

 四、FacetGrid, PairGrid中自定义绘制函数

1、FacetGrid

 2、PairGrid


数据分析——seaborn可视化(笔记自用)

 seaborn的函数结构通常可按照上图划分为:图绘制函数(紫红色)和轴绘制函数(天蓝色)。

每一类图绘制函数聚合了对应的轴绘制函数的功能,还提供相应的接口。

一、变量分布 

拿到一个数据,首先要查看变量的分布: 

  • 变量取值范围,是否有异常值(outliers)?
  • 变量分布是否近似正态分布?如果不是,那么是否有偏移?是否有双峰分布(bimodality)?
  • 如果依据类别变量对数据集进行划分,各子集上变量的分布是否有很大的差异?

1、查看异常值 

(1)用seaborn中自带的数据集

print(sns.get_dataset_names())

数据分析——seaborn可视化(笔记自用)

penguin_df = sns.load_dataset('penguins')
penguin_df

数据分析——seaborn可视化(笔记自用)

(2)sns.boxplot():查看数值变量的取值范围,观察是否有异常值(箱型图) 

sns.boxplot(data=penguin_df, x='bill_length_mm')    # 定义数据和变量名

 数据分析——seaborn可视化(笔记自用)

图中 箱子中间的线是数据的中值;箱体左右两个边界是四分位数(75%的值是小于49的,25%的值小于39);箱体外的两条线是表示合理范围内的最大值和最小值(用公式计算出来的),超出这个范围的话,数据就是不合理的,有可能是异常值,需要具体情况具体分析。

1、boxplot对应catplot(类别变量分析),因此箱体图也可以用catplot绘制:

sns.catplot(data=penguin_df, x='bill_length_mm',kind='box')  # 需要定义kind

数据分析——seaborn可视化(笔记自用)

 2、也可以将所有变量的箱型图放到一个图中,但往往会因为数据不是一个数量级而效果不好:

sns.boxplot(data=penguin_df)

数据分析——seaborn可视化(笔记自用)

(3)观察异常值情况

sns.boxplot(data=tip_df)

数据分析——seaborn可视化(笔记自用)

图中红色圈的部分可能是异常值的点(具体问题具体分析)。

2、观察变量分布 

(1)sns.displot():查看变量的分布

sns.displot(data=penguin_df, x='bill_length_mm')

 数据分析——seaborn可视化(笔记自用)

# 通过设置bins来控制直方图的划分 
sns.displot(data=penguin_df, x='bill_length_mm', bins=50)

数据分析——seaborn可视化(笔记自用)

 bins划分过粗可能会忽略数据的分布特征,但有时划分过细又会导致过分解读。可以看到上图呈现双峰分布。

1、displot也可以对类别变量进行分析:

sns.displot(data=penguin_df, x='species')

 数据分析——seaborn可视化(笔记自用)

2、对比用countplot对类别变量进行分析:

sns.countplot(data=penguin_df, x='species')
sns.displot(data=penguin_df, x='species', hue='species', shrink=0.7)

displot可以通过hue参数进行颜色区分,通过shink对柱状图进行放缩

数据分析——seaborn可视化(笔记自用)

(2)sns.displot():看kde曲线

用核函数对数据的分布进行拟合,默认使用高斯核函数.

  • 方法一:
sns.displot(data=penguin_df, x='bill_length_mm', kind='kde')
  • 方法二:
sns.kdeplot(data=penguin_df, x='bill_length_mm')

数据分析——seaborn可视化(笔记自用)

rugplot是不占空间的,可以直接叠加在displot的图像上:

sns.displot(data=penguin_df, x='bill_length_mm', kind='kde', rug=True)

 数据分析——seaborn可视化(笔记自用)

 虽然kde曲线更容易观察数据的分布规律,但可能在图像边缘部分的绘制超出取值范围。

  • 解决方案一:(令cut=0)
sns.displot(data=penguin_df, x='bill_length_mm', kind='kde', rug=True, cut=0)

数据分析——seaborn可视化(笔记自用)

但是这种方法可能会改变数据分布。

  • 解决方案二:(在直方图上叠加绘制kde)
sns.displot(data=penguin_df, x='bill_length_mm', kde=True)

数据分析——seaborn可视化(笔记自用)

 (3)分析双峰分布

sns.displot(data=penguin_df, x='bill_length_mm', kind='kde', hue='species')

数据分析——seaborn可视化(笔记自用)

 从图中可以看到,企鹅的最长在不同的种类上的kde分布是不一样的,它们之间有一定的差距。所以叠加起来会呈现双峰分布的特点。

 (4)分析偏移情况  

可以对数据进行对数处理

(5)经验分布函数(acdfplot)  

sns.displot(data=penguin_df, x='bill_length_mm', kind='ecdf')

 数据分析——seaborn可视化(笔记自用)

 图中55对应的比例是0.97,表示数据中低于55的数据占75%。功能与箱型图比较类似,只是用不同的形式表现出来了。

3、figure-level functions具有FacetGrid特性 

FacetGrid将行和列设置成类别变量,根据数据变量的不同类别,将数据划分成不同的子集,在各个子集上分析各个变量的分布。(相当于绘制了变量的条件概率分布)

sns.displot(data=penguin_df, x='bill_length_mm', row='sex', col='island', kind='kde', hue='species')

 将行设置为性别(有两个类别),列设置为岛屿(有三个类别),绘制企鹅的嘴长的kde曲线(bill_length_mm)。

数据分析——seaborn可视化(笔记自用)

二、数值变量的关系分析 

1、sns.relplot():

  • 绘制散点图
sns.relplot(data=tip_df, x='total_bill', y='tip', hue='time', style='time', markers=['o', '^'])

数据分析——seaborn可视化(笔记自用)

 markers可以自定义图中点的样式

sns.relplot(data=tip_df, x='total_bill', y='tip', hue='size', size='size')

 数据分析——seaborn可视化(笔记自用)

 当类别较多时,会采用渐进色表示,通过size还可以设置大小。

  • 绘制连线图
sns.relplot(data=tip_df, x='total_bill', y='tip',kind='line')

 数据分析——seaborn可视化(笔记自用)

 上面的图有点乱,因为连线图适合分析时序数据、股价的波动等等。

# 股价分析
stock_df = pd.DataFrame(dict(time=np.arange(500), price=np.random.randn(500).cumsum()+np.ones(500)*50))
sns.relplot(data=stock_df, x='time', y='price', kind='line')

 随机数产生500个数,用累计和函数(cumsum)达到连续变化的效果来模拟股价变化。数据分析——seaborn可视化(笔记自用)

2、sns.lmplot():分析两个变量的线性关系

 前面对tip_df绘制散点图时可以看到数据具有一定的相关性,因此可以用lmplot 取绘制回归线。

sns.lmplot(data=tip_df, x='total_bill', y='tip')

 数据分析——seaborn可视化(笔记自用)

regplot和lmplot 绘制回归线的效果一样:

sns.regplot(data=tip_df, x='total_bill', y='tip')

 数据分析——seaborn可视化(笔记自用)

 通过residplot绘制残差图:

sns.residplot(data=tip_df, x='total_bill', y='tip')

 数据分析——seaborn可视化(笔记自用)

 理性情况下(拟合好的话),残差应该是随机分布的,而这里的残差还呈现一定的发散分布,肯定是两个变量之间的关系还没挖掘出来。

  • lmplot也可以和relplot一样添加类别变量
sns.lmplot(data=tip_df, x='total_bill', y='tip', hue='time')

数据分析——seaborn可视化(笔记自用) 

  •  lmplot也具有FacetGrid特性
sns.lmplot(data=tip_df, x='total_bill',row='smoker', col='time', y='tip', hue='time')

数据分析——seaborn可视化(笔记自用)

 文章来源地址https://www.toymoban.com/news/detail-400361.html

3、sns.displot():绘制两个变量的联合分布

直方图形式: 

sns.displot(data=penguin_df, x='bill_length_mm', y='bill_depth_mm')

数据分析——seaborn可视化(笔记自用) 

 kde曲线形式:

sns.displot(data=penguin_df, x='bill_length_mm', y='bill_depth_mm', kind='kde')

数据分析——seaborn可视化(笔记自用)

 可以通过设置thresh(0-1)来控制图形显示的范围、level控制线的疏密程度。

也可以用displot绘制类别变量的联合分布:

sns.displot(data=penguin_df, x='island', y='species')

数据分析——seaborn可视化(笔记自用)

 从图中可以看到,Gentoo只在Biscore island上,在Biscore island上,Gentoo占大多数,但还是有一部分的Adelie。

4、sns.jointplot():绘制两个变量的联合分布和各自分布

 (1)sns.jointplot()

默认情况下,联合分布是散点图,可以通过kind进行设置。`kind` is one of ['scatter', 'hist', 'hex', 'kde', 'reg', 'resid']
sns.jointplot(data=tip_df, x='total_bill', y='tip')

 数据分析——seaborn可视化(笔记自用)

 还可以通过hue加入一个类别变量:

数据分析——seaborn可视化(笔记自用)

与displot相同,jointplot也可以绘制两个类别变量。 

(2)jointplot的升级版:JointGrid,可通过g.plot自定义函数

g = sns.JointGrid(data=tip_df, x='total_bill', y='tip')
g.plot(sns.histplot, sns.boxplot)  # 中间用直方图,边缘用箱型图

数据分析——seaborn可视化(笔记自用)

 自定义部分也可以更加具体:

g = sns.JointGrid(data=tip_df, x='total_bill', y='tip')
g.plot_joint(sns.kdeplot)  # 联合分布
g.plot_marginals(sns.histplot, kde=True)  # 边缘各自的分布

数据分析——seaborn可视化(笔记自用)

 (3)sns.pairplot():成对绘制所有数值变量的联合分布

sns.pairplot(data=tip_df, kind='kde')

数据分析——seaborn可视化(笔记自用)

 当变量较多时,可以选择自己所需的关键变量进行分析:
数据分析——seaborn可视化(笔记自用)

 (4)pairplot的升级版:PairGrid,可通过g.map自定义函数

g = sns.PairGrid(data=car_df, x_vars=['total', 'speeding', 'alcohol'], y_vars=['total', 'speeding', 'alcohol'])
g.map_upper(sns.scatterplot)
g.map_diag(sns.histplot, kde=True)
g.map_lower(sns.regplot)

数据分析——seaborn可视化(笔记自用)

  (5)data.corr()+sns.heatmap():成对绘制所有数值变量的相关系数

首先求出每对变量的相关系数 :

car_cor = car_df.corr()
car_cor

数据分析——seaborn可视化(笔记自用) 然后用热力图的方式把求到的相关系数表示出来:

sns.heatmap(car_cor, cmap='Blues', annot=True, fmt='.2f', linewidth=0.5)

数据分析——seaborn可视化(笔记自用)

 其中annot用来显示数值,fmt='.2f'表示浮点型,保留到小数点后两位。

 三、类别变量的分析

 1、类别变量的分布:sns.countplot(),类似sns.histplot()

sns.catplot(data=tip_df, x='time', kind='count')

数据分析——seaborn可视化(笔记自用)

 2、类别变量与数值变量的关系

(1)不同类别中数值变量的均值/中值估计:barplot, pointplot

sns.catplot(data=penguin_df, x='species', y='bill_length_mm', kind='bar', estimator=np.median, hue='island')

数据分析——seaborn可视化(笔记自用)

sns.catplot(data=penguin_df, x='species', y='bill_length_mm', kind='point')

 数据分析——seaborn可视化(笔记自用)

(2)不同类别中数值变量的取值范围:boxplot, boxenplot

sns.catplot(data=penguin_df, x='species', y='bill_length_mm', kind='box')

 数据分析——seaborn可视化(笔记自用)

 一般情况下boxplot就够用了,当变量取值范围很大时,可以用boxenplot(适合大数据集)。boxenplot可以逐级地绘制箱型图。

(3)不同类别中数值变量的分布图:stripplot, swarmplot, violinplot

 带状图结合了散点图和直方图的特点:

数据分析——seaborn可视化(笔记自用)

sns.catplot(data=penguin_df, x='species', y='bill_length_mm', kind='strip',jitter=0.3)

 通过jitter可以设置带状图的宽度,取值范围[0,1] 

 数据分析——seaborn可视化(笔记自用)

 swarmplot:

数据分析——seaborn可视化(笔记自用)

violinplot:

数据分析——seaborn可视化(笔记自用) 

 可以将swarmplot 叠加到violinplot上:

sns.catplot(data=penguin_df, x='species', y='bill_length_mm', kind='violin')
sns.swarmplot(data=penguin_df, x='species', y='bill_length_mm', color='w') # 这里要用axes-level

数据分析——seaborn可视化(笔记自用)

 四、FacetGrid, PairGrid中自定义绘制函数

1、FacetGrid

g = sns.FacetGrid(data=tip_df, row='time', col='smoker')  # 定义的行列需要是类别变;出来的图只有框线
# 自定义部分
g.map(sns.kdeplot, 'tip')

数据分析——seaborn可视化(笔记自用)

 绘制联合分布

g = sns.FacetGrid(data=tip_df, row='time', col='smoker') 
# 也可以绘制两个变量的联合分布
g.map(sns.scatterplot,'total_bill', 'tip')

数据分析——seaborn可视化(笔记自用)

 2、PairGrid

用法与pairplot类似 

g = sns.PairGrid(data=penguin_df,hue='species')
g.map_diag(sns.kdeplot)
g.map_offdiag(sns.scatterplot)

数据分析——seaborn可视化(笔记自用)

 

到了这里,关于数据分析——seaborn可视化(笔记自用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据挖掘与人工智能可视化分析】可视化分析:如何通过可视化技术进行数据挖掘和发现

    作者:禅与计算机程序设计艺术 数据挖掘(Data Mining)和人工智能(Artificial Intelligence,AI)已经成为当今社会热点话题。这两者之间的结合也带来了很多挑战。作为数据科学家、机器学习工程师、深度学习研究员等,掌握了数据的获取、清洗、处理、建模、应用这些技术的前提下,

    2024年02月07日
    浏览(74)
  • 大数据可视化——基于Python豆瓣电影数据可视化分析

    本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示,构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据,我们提供了一个全面的电影信息平台,为用户提供深入了解电影产业趋势、影片评价与演员表现的工具。项目的关键步骤包括

    2024年02月04日
    浏览(75)
  • 数据分析基础-数据可视化02-不同数据类型的可视化概念及原则

    将数据空间映射到颜色空间。 数据可以被划分为两个主要的数据空间:连续数据和分类数据。这两种数据空间有不同的特点和适用的分析方法。 连续数据(Continuous Data): 连续数据是指可以在某个范围内取任何数值的数据。在连续数据空间中,数据点之间存在无限多的可能

    2024年02月11日
    浏览(45)
  • 大数据可视化——基于Python豆瓣电影数据可视化分析系统

    本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示,构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据,我们提供了一个全面的电影信息平台,为用户提供深入了解电影产业趋势、影片评价与演员表现的工具。项目的关键步骤包括

    2024年01月21日
    浏览(56)
  • 模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)

    KNNImputer的默认算法是基于K最近邻算法来填充缺失值。具体步骤如下: 对于每个缺失值,找到其最近的K个邻居样本。 使用这K个邻居样本的非缺失值来计算缺失值的近似值。可以使用均值、中位数或加权平均值等方法来计算近似值。 将计算得到的近似值填充到缺失值的位置。

    2024年02月12日
    浏览(42)
  • python基于大数据的手机分析系统与可视化 -可视化大屏分析

    前言 该系统采用了多种数据源,包括用户行为数据、社交数据、市场趋势数据等,通过数据挖掘、统计分析等手段,对这些数据进行分析和建模。其中,用户行为数据包括用户使用手机的频率、时间、地理位置、应用使用情况等,社交网络数据包括用户在交网络上的行为、好

    2024年02月03日
    浏览(44)
  • 大数据毕设分享 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年01月23日
    浏览(52)
  • Python大作业——爬虫+可视化+数据分析+数据库(可视化篇)

    相关链接 Python大作业——爬虫+可视化+数据分析+数据库(简介篇) Python大作业——爬虫+可视化+数据分析+数据库(爬虫篇) Python大作业——爬虫+可视化+数据分析+数据库(数据分析篇) Python大作业——爬虫+可视化+数据分析+数据库(数据库篇) 由于该程序会通过与数据库

    2024年02月04日
    浏览(61)
  • 数据分析基础:数据可视化+数据分析报告

    数据分析是指通过对大量数据进行收集、整理、处理和分析,以发现其中的模式、趋势和关联,并从中提取有价值的信息和知识。 数据可视化和数据分析报告是数据分析过程中非常重要的两个环节,它们帮助将数据转化为易于理解和传达的形式,提供决策支持和洞察力。在接

    2024年02月07日
    浏览(51)
  • 数据分析案例-顾客购物数据可视化分析

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.数据集介绍 3.技术工具 4.导入数据 5.数据可视化 5.1分析性别比例 5.2年龄

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包