我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 数据科学中的 Seaborn 绘图可视化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python 数据科学中的 Seaborn 绘图可视化

 Python中文社区 (ID:python-china)

本篇文章主要研究 Seaborn 库——Seaborn 是一个统计绘图库,建立在 Matplotlib 基础之上。它具有非常漂亮的默认绘图样式,并且也与 Pandas DataFrames 配合得很好。

Seaborn 可以像安装任何其他 Python 包一样使用“pip”进行安装。

  1. pip install seaborn 

Seaborn 的官方文档地址如下:

https://seaborn.pydata.org/

另一个重要的地址是官方 API,它引用了各种可用的绘图类型。

https://seaborn.pydata.org/api.html

我将尝试将 Seaborn 的功能分解为不同的类别——并从使我们能够可视化数据集分布的图开始。

让我们从导入开始并加载数据 - 我将使用“Financial Sample.xlsx”数据。excel文件可以长按扫码文末二维码后进入宽客量化俱乐部下载:

Financial Sample.xlsx 

  1. import pandas as pd  
  2. import seaborn as sns  
  3. #如果使用 Jupyter Notebooks,下面的行允许我们在浏览器中显示图表  
  4. %matplotlib inline  
  5. #在 Pandas DataFrame 中加载我们的数据  
  6. df = pd.read_excel('Financial Sample.xlsx')   
  7. #打印前 5 行数据以确保正确加载  
  8. df.head() 

让我们首先看看“distplot”——这让我们可以看到一组单变量观测值的分布——单变量只是意味着一个变量。 

  1. #绘制 DataFrame "Profit" 列的分布  
  2. sns.displot(df['Profit']) 

我们现在有一个感兴趣的分布图——但作为一个快速入门,风格看起来有点平淡。让我们给它一个更常见的“Seaborn”样式,试图让它看起来更好一点…… 

  1. #设置我们希望用于绘图的样式  
  2. sns.set_style("darkgrid")  
  3. #绘制 DataFrame "Profit" 列的分布  
  4. sns.displot(df['Profit']) 

我们已经设法用一行代码绘制 DataFrame 数据的直方图以及“KDE”线——即核密度估计图。如果我们在 plot 调用中添加“kde=False”,我们可以删除 KDE。我们还可以按如下方式更改直方图中“bins”的数量——在本例中,它们被设置为 50: 

  1. sns.displot(df['Profit'],kde=False,bins=50

现在让我们看一个“联合图”——这允许我们组合两个 distplots 并处理双变量数据。让我们创建一个快速的联合图。为此,我们需要通过传入列名来指定我们想要绘制的 DataFrame 列,以及我们从中提取列的实际 DataFrame。这可以按如下方式完成:假设我想绘制“Profit”列与“Units Sold”列。 

  1. sns.jointplot(x='Profit',y='Units Sold',data=df

我们现在有一个图,显示了两个变量列之间的散点图,以及它们在任一侧的相应分布图(它甚至在右上角为我们提供了皮尔逊相关系数和 p 分数。)

Jointplot 还允许我们设置一个名为“kind”的附加参数。这允许您影响主图表的表示方式。目前它是一个“散点”,因为这是默认值,但是如果我们将其更改为“十六进制”,例如,我们将得到以下图,它将图表上的点表示为密度六边形 - 即包含更多数据点的六边形 显示为比包含较少点的那些更暗。 

  1. sns.jointplot(x='Profit',y='Units Sold',data=df,kind='hex'

我们可以为“kind”添加的另一个参数是“reg”,它代表回归。这看起来很像散点图,但这次将添加线性回归线。 

  1. sns.jointplot(x='Profit',y='Units Sold',data=df,kind='reg'

我们可以规定的另一种类型是“kde”,它将绘制一个二维 KDE 图,它基本上只显示数据点最常出现的位置的密度。 

  1. sns.jointplot(x='Profit',y='Units Sold',data=df,kind='kde'

让我们从jointplots继续看“pairplots”。这些使我们能够查看整个数据帧(对于数值数据)的成对关系,并且还支持分类数据点的“色调”参数。所以 pairplot 本质上是为 DataFrame 中数字列的每个可能组合创建一个联合图。我将快速创建一个新的 DataFrame,它删除“Month Number”和“Year”列,因为这些并不是我们连续数字数据的一部分,例如“利润”和“COGS”(销售成本)。我还将删除其他几列以缩小我们的 DataFrame,这样我们的输出图就不会过于拥挤。 

  1. #删除不需要的列  
  2. new_df = df.drop(['Month Number','Year','Manufacturing Price','Sale Price'],axis=1 
  3. sns.pairplot(new_df) 

请注意,我们基本上对每对列都有一个配对图,并且在对角线上我们有一个分布的直方图,因为将数据与自身进行联合图是没有意义的。这是快速可视化数据的好方法。我们还可以添加一个“色调”——这是我们指定一个用于分割数据的分类变量的地方。让我们添加“Segment”列作为我们的“色调”。 

  1. sns.pairplot(new_df,hue='Segment'

现在数据点根据分类数据着色——颜色图例显示在图的右侧边缘。我们还可以通过设置“调色板”参数来更改绘图使用的调色板。以下是使用“岩浆”配色方案的示例。所有可用的方案都可以在 Matplotlib 站点上找到。 

  1. sns.pairplot(new_df,hue='Segment',palette='magma'

我们将看到的下一个图是一个“rugplot”——这将帮助我们构建和解释我们之前创建的“kde”图是什么——无论是在我们的 distplot 中还是当我们传递“kind=kde”作为我们的参数时。 

  1. sns.rugplot(df['Profit']) 

如上所示,对于 rugplot,我们将要绘制的列作为参数传递 - rugplot 的作用是为分布中的每个点绘制一个破折号。所以 rugplot 和 distplot 之间的区别在于 distplot 涉及“bins”的概念,并将把每个 bin 中的所有数据点相加,并绘制这个数字,而 rugplot 只是在每个数据点绘制一个标记。

所以现在让我们将 rugplot 转换为 KDE 图。KDE 代表“核密度估计”。下图是解释如何将 rugplots 构建到 KDE 图中的。

如果我们愿意的话,我们可以从一组数据和 rugplot 中构建我们自己的 KDE 图,看看它是否与使用内置的“kdeplot”直接创建的 KDE 图相匹配. 

  1. #设置一组 30 个取自正态分布的数据点  
  2. x = np.random.normal(0, 1, size=30 
  3. #设置 KDE 点的带宽  
  4. bandwidth = 1.06* x.std() * x.size ** (-1/ 5.)  
  5. #设置 y 轴的限制  
  6. support = np.linspace(-4, 4, 200)  
  7. #遍历数据点并为每个点创建内核,然后绘制内核  
  8. kernels = []  
  9. for x_i in x:  
  10.     kernel = stats.norm(x_i, bandwidth).pdf(support)  
  11.     kernels.append(kernel)  
  12.     plt.plot(support, kernel, color="r" 
  13. sns.rugplot(x, color=".2"linewidth=3

 

  1. #使用复合梯形规则沿给定轴积分并创建 KDE 图  
  2. from scipy.integrate import trapz  
  3. density = np.sum(kernels, axis=0 
  4. density /= trapz(density, support)  
  5. plt.plot(support, density) 

现在让我们使用内置的“kdeplot”绘制 KDE 图。 

  1. sns.kdeplot(x, shade=True

我们可以看到两个图是相同的,我们已经正确地创建了我们的 KDE 图。本文已经涵盖了大部分分布图功能。 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python 数据科学中的 Seaborn 绘图可视化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python 数据科学中的 Seaborn 绘图可视化

本篇文章主要研究 Seaborn 库——Seaborn 是一个统计绘图库,建立在 Matplotlib 基础之上。它具有非常漂亮的默认绘图样式,并且也与 Pandas DataFrames 配合得很好。

如何使用python数据可视化Seaborn绘制山脊图

这篇文章主要介绍如何使用python数据可视化Seaborn绘制山脊图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 引言山脊图一般由垂直堆叠的折线图组成,这些折线图中的折线区域间彼此重叠,此外它们还共享相同的x
2023-06-22

如何使用python数据可视化Seaborn画热力图

这篇文章主要为大家展示了“如何使用python数据可视化Seaborn画热力图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用python数据可视化Seaborn画热力图”这篇文章吧。1.
2023-06-22

Python中seaborn库之countplot的数据可视化使用

在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效。 seaborn官方文档见链接:http://seaborn.pydata.org/api.html countplot是seaborn库中分类图的一种,作用是使用
2022-06-02

Python数据可视化,seaborn如何做出非常规图表

这一节我们就来看看,如何使用 seaborn 生成标准图表,然后结合 matplotlib 做出定制效果。特别是多系列的情况下,会有一些技巧。

python数据可视化之饼状图的绘制

本篇文章给大家带来了关于python的相关知识,其中主要整理了饼状图的绘制相关问题,Pyplot 包含一系列绘图函数的相关函数,其中pie()函数可以绘制饼状图,下面一起来看一下,希望对大家有帮助。Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 包含一系列绘图函数的相关函数,其中pie()函数可以绘制饼状图 用的时候,我们可以使用 impo
2022-06-22

Python中怎么利用seaborn实现数据可视化

本篇文章为大家展示了Python中怎么利用seaborn实现数据可视化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。本文目标图表是这样:2个系列。每个系列找出最小最大的柱子,标记成不同的颜色本文所需
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录