python绘图矩阵散点图_Python实践:seaborn的散点图矩阵(Pairs Plots)可视化数据

如何快速创建强大的可视化探索性数据分析,这对于现在的商业社会来说,变得至关重要。今天我们就来,谈一谈如何使用python来进行数据的可视化!

一旦你有了一个很好的被清理过的数据集,下一步就是探索性数据分析(EDA)。EDA是确定数据可以告诉我们的过程,我们使用EDA来查找模式、关系或异常情况,以便指导我们后续的工作。然而在EDA中有很多的方法,但最有效的工具之一是对图(也称为散点图矩阵)。散点图矩阵让我们看到了两个变量之间的关系。散点图矩阵是识别后续分析趋势的好方法,幸运的是,它们很容易用Python实现!

在本文中,我们将通过使用seaborn可视化库在Python中进行对图的绘制和运行。我们将看到如何创建默认配对图以快速检查我们的数据,以及如何自定义可视化以获取更深入的洞察力。该项目的代码在GitHub上以Jupyter Notebook的形式提供。在这个项目中,我们将探索一个真实世界的数据集,由GapMinder收集的国家级社会经济数据组成。

Seaborn的散点图矩阵(Pairs Plots)

在开始之前,我们需要知道我们有什么数据。我们可以将社会经济数据用熊猫(Pandas)数据框加载并查看列:

每行数据代表一个国家在一年内的结果,列中包含变量(这种格式的数据称为整洁数据)。有2个分类专栏(国家和大陆)和4个数字专栏。这些专栏包括:life_exp是几年出生时的预期寿命,pop是人口,gdp_per_cap是以国际美元为单位的人均国内生产总值。

虽然后面我们将使用分类变量进行着色,但seaborn中的默认对图仅绘制了数字列。创建默认的散点图矩阵很简单:我们加载到seaborn库并调用pairplot函数,将它传递给我们的数据框:

我仍然惊讶于一行简单的代码就可以完成我们整个需求!散点图矩阵建立在两个基本图形上,直方图和散点图。对角线上的直方图允许我们看到单个变量的分布,而上下三角形上的散点图显示了两个变量之间的关系。例如,第二行中最左边的图表显示life_exp与年份的散点图。

默认的散点图矩阵图经常给我们提供有价值的见解。我们看到人均预期寿命和人均GDP是正相关的,这表明高收入国家的人们倾向于更长寿(尽管这当然不能证明导致其他人也是如此)。它也似乎看起来是全世界的预期寿命随着时间的推移而上升。为了在未来的图中更好地显示这些变量,我们可以通过取这些值的对数来转换这些列:

虽然这种制图本身可以用于分析,但我们可以发现,通过对诸如大陆这样的分类变量进行数字着色,使其更有价值。这在seaborn中非常简单!我们所需要做的就是在hue中使用sns.pairplot函数调用使用关键字:

现在我们看到大洋洲和欧洲的人均预期寿命最高,亚洲人口最多。请注意,我们对人口和gdp的日志转换使这些变量正态分布,从而更全面地表示值。

上图更具信息性,但仍然存在一些问题:找不到叠加的直方图,就像在对角线上那样,它非常易于理解。显示来自多个类别的单变量分布的更好方法是密度图。我们可以在函数调用中交换柱状图的密度图。当我们处理它时,我们会将一些关键字传递给散点图,以更改点的透明度,大小和边缘颜色。

对角线上的密度图比堆积条更容易比较各大洲之间的分布。改变散点图的透明度可以提高可读性,因为这些数字有相当多的重叠(称为重叠绘图)。

作为pairplot默认的最后一个例子,让我们通过绘制2000年后的年份来减少数据混乱。我们仍然会按照大陆分布着色,但现在我们不会绘制年份列。为了限制绘制的列,我们将一个列表传递vars给函数。为了说明情节,我们还可以添加标题。

这开始看起来很不错!如果我们要进行建模,我们可以使用这些图中的信息来帮助我们进行选择。例如,我们知道log_gdp_per_cap与life_exp正相关,所以我们可以创建一个线性模型来量化这种关系。对于这篇文章,我们将坚持绘图,如果我们想要更多地探索我们的数据,我们可以使用PairGrid类自定义散点图矩阵。

使用PairGrid进行自定义

与sns.pairplot函数相反,sns.PairGrid是一个类,它意味着它不会自动填充我们的网格plot。相反,我们创建一个类实例,然后将特定函数映射到网格的不同部分。要用我们的数据创建一个PairGrid实例,我们使用下面的代码,这也限制了我们将显示的变量:

如果我们要显示它,我们会得到一个空白图,因为我们没有将任何函数映射到网格部分。有三个网格部分填写PairGrid:上三角形、下三角形和对角线。要将网格映射到这些部分,我们使用grid.map 部分中的方法。例如,要将散点图映射到我们使用的上三角形:

该map_upper方法接受任何两个变量数组(如plt.scatter)和关联的关键字(如color)的函数。该map_lower方法完全相同,但填充网格的下三角形。因为它需要在接受单个阵列(记住对角线仅示出了一个变量)的函数略有不同。一个例子是plt.hist我们用来填写下面的对角线部分:

在这种情况下,我们在下三角形中使用2-D(密度图)的核密度估计值。放在一起,这段代码给了我们下面的图:

使用PairGrid类的真正好处在于我们想要创建自定义函数来将不同的信息映射到图上。例如,我可能想要将两个变量之间的Pearson相关系数添加到散点图中。为此,我会编写一个函数,它接受两个数组、计算统计量,然后在图上绘制它。下面的代码显示了这是如何完成的(归功于这个Stack Overflow答案):

我们的新函数映射到上三角形,因为我们需要两个数组来计算相关系数(还要注意我们可以将多个函数映射到网格部分)。这会产生以下图形:

相关系数现在出现在散点图上方。这是一个相对直接的例子,但我们可以使用PairGrid将我们想要的任何函数映射到图上。我们可以根据需要添加尽可能多的信息,只要我们能够弄清楚如何编写函数!作为最后一个例子,这里是一个显示对角线而不是网格的汇总统计图。

它显示了我们只做图标的总体思路,除了使用库中的任何现有功能(例如matplotlib将数据映射到图上)之外,我们还可以编写自己的函数来显示自定义信息。

结论

散点图矩阵是快速探索数据集中的分布和关系的强大工具。Seaborn提供了一个简单的默认方法,可以通过Pair Grid类来定制和扩展散点图矩阵。在一个数据分析项目中,价值的主要部分往往不在于浮华的机器学习,而在于直观的数据可视化。散点图举证为我们提供了全面的数据分析,是数据分析项目的一个很好的起点。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由阿里云云栖社区组织翻译。

文章原标题《visualizing-data-with-pair-plots-in-python》,

译者:虎说八道,审校:袁虎。

文章为简译,更为详细的内容,请查看原文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目入口_新进展!石家庄地铁项目长安公园站出入口全部封顶

(通讯员 韩静娟)5月3日,伴随着长安公园站C出入口最后一方混凝土的浇筑到位,由中铁隧道局路桥公司承建的石家庄地铁2号线06标长安公园站出入口全部封顶,为石家庄地铁二号线顺利开通打下了坚实的基础。石家庄地铁2号线作为石家庄市南北向骨干线…

echo怎么把日志清空_shell脚本清空系统message日志

1 #/bin/bash2 #此脚本用来清空系统message日志文件3 #author:wyf date:16/10/304 LOG_DIR/var/log5 ROOT_UID06 #必须系统管理员权限才能执行7 if [ "$UID" -ne "${ROOT_UID}" ]8 then9 echo "Must be root to run this script"10 …

一直显示数据格式错误_Excel数据分析,新手最容易犯的10个建表错误

在使用Excel 建立数据表时,养成规范、良好的制表习惯至关重要,这不仅有益于后期数据分析的顺利进行,而且能体现专业素质。下面介绍一些新手容易犯的规范上的错误。1.随意插入空格很多新手在制表时容易随意插入空格,认为这样可以更…

python编程中的运算_Python编程中的四大运算法则

接触过编程的人都知道,编程中的数学知识无处不在,通过数学建模能够解决我们实际生活中的很多问题。当然这并不是说必须要成为一名数学大神才能学编程,但掌握数学知识在编程中的表达方法却是很有必要的,今天南京小码王Python培训班…

python selenium 怎么查找modal悬浮窗的内容_python教程:五分钟从pubmed down几万篇文献...

小编有话说:hello guys!昨天推送的stata做图教程您学会了吗?有任何疑问欢迎后台咨询我们热心的罗仔。今天换个口味,学学python自动化。作为科研小达人,不学一些旁门左道傍身怎么行!今天我们扒一扒pubmed,如…

安装git安装路径在哪_Atom插件安装与git的安装配置

一、Atom 插件在线安装1. 安装插件language-asciidoc 》语法高亮asciidoc-preview 》实时预览在dos 下通过cmd命令安装插件打开dos窗口 window可用快捷键 winr 再输入cmd安装language-asciidoc 输入 apm install language-asciidoc 如果apm不能识别请用 npm install language-…

如何让小程序页面更顺滑_小程序怎样让wx.navigateBack更好用的方法实现

相信只要开发过小程序,对wx.navigateBack 这个 api都不会陌生。在摩拜单车的小程序中,它也被改造的更方便满足复杂的业务需求,可谓之 增强型的 wx.navigateBack。先来看看官方文档中的用法:wx.navigateBack({delta: 2})delta 表示…

编制一个c语言成绩记录簿_C语言基础知识点模拟试题

一、单选题(每题2分,共25题,共50分)执行以下程序后,输出结果是( )int a 255;char c;ca;printf("%d",c);A)255 B)0 C)-3 D)-1有以下程序#include void main( ){ FILE *fp; int i,k0,n0; fpfopen("d1.dat&…

opencv方框内图像保存_opencv::将两幅图像合并后,在同一个窗口显示;并将合并的图像流保存成视频文件...

/*** file main-opencv.cpp* date July 2014* brief An exemplative main file for the use of ViBe and OpenCV*///#include #include "vibe-background-sequential.h"using namespacecv;using namespacestd;const int minArea 2; //舍去面积极小的方框const doubl…

闪灯什么意思_开夜车被对方闪了一下是什么意思?老司机:灯语都不懂,晚上别开车...

阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都有分享,完全是免费订阅,请放心关注。 注:本文转载自网络&#xff…

android radiogroup 获取点击位置_屏幕连点器,解放双手[Android]

这里是“微友集市”,我们坚持分享优质的资源,让更多人能用到更好的资源,少花冤枉钱。如果你有什么需要,可以给我们留言,我们会努力去为你寻找,或许你需要的,也是别人需要的...1自动点击器 是一款…

c语言 freopen txt_C语言文件操作函数freopen详细解析

今天做USACO 用到了文件的操作。 之前做USACO只是格式化的些 写 freopen("xxx.in","r",stdin) 和"freopen("xxx.out","w",stdout)"百度百科上是这么介绍的:函数名: freopen功 能: 替换一个流,或者…

apache poi excel显示 base64 图片_数据处理之带图片Excel数据处理解惑

小编最近项目中遇到一个大批量Excel数据提取的问题,因为Excel数据中含有图片,所以在程序处理时遇到了困难,小编花了点时间才解决了这个问题,所以在这里mark一下。1 问题描述首先来描述一下数据处理的需求,如下图所以是…

qt连接mysql创建表_如何在Qt中创建mysql数据库表?

我想创建表到MySQL数据库。我能够成功地打开数据库,但包含创建表命令不起作用的查询? 如果有人知道它,请让我知道我会很感激。如何在Qt中创建mysql数据库表?mydb QSqlDatabase::addDatabase("QMYSQL");mydb.setDatabas…

mysql加锁后怎么解除_Mysql查看死锁与解除死锁的深入讲解

前言前段时间遇到了一个Mysql 死锁相关的问题,整理一下。问题描述:Mysql 的修改语句似乎都没有生效,同时使用Mysql GUI 工具编辑字段的值时会弹出异常。什么是死锁在解决Mysql 死锁的问题之前,还是先来了解一下什么是死锁。死锁是…

mysql ssd优化_mysql ssd 优化

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

mysql查询工具哪个好_一个比较实用的数据库查看管理工具

个人从业四年多,和数据库打交道不计其数,特别是在之前做企业级应用系统的时候,整天就是在业务、数据和程序之间穿梭,那个数据查的呀,平均每天有40% 左右的时间都在手工的写sql进行数据的查询。刚开始,通过数…

mysql运维机制_《MySQL运维内参》节选 | InnoDB日志管理机制(一)

引 子InnoDB 存储引擎是支持事务ACID特性的,它是以二十多年前IBM的一篇著名文章《ARIES:A Transaction Recovery Method Supporting Fine-Granularity Locking and PartialRollbacks Using Write-Ahead Logging》为理论基础,大多数关系型数据库的实现都是…

mysql 多个实例 备份_Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份...

1、从MYSQL官方下载MYSQL的源码版本【一定要是源码版本】2、按以下代码键入LINUX命令行[注] 添加mysql组和用户#groupadd mysql#useradd -g mysql mysql[注] 解包到/usr/local# tar -xzf mysql-standard-4.1.9-pc-linux-gnu-i686.tar.gz -C /usr/local[注] 建立软链接&#xff…

数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论

mysql的逻辑分层:连接层 服务层 引擎层 存储层引擎层主要分为两类:InnoDB、MyIsam(使用show engines;查看)InnoDB是事务优先的,会进行行锁,适合高并发操作MyIsam是性能优先的,进行表锁sql优化点:等待时间长…