数据可视化Python库介绍:Seaborn-让绘图变得有趣
off999 2024-09-26 16:07 27 浏览 0 评论
如果您曾经在Python中使用过线图,条形图等图形,那么您一定已经遇到了名为matplotlib的库。尽管matplotlib库非常复杂,但绘图并没有那么精细,也不是任何人发布的首选。这是seaborn出现的地方。
Seaborn是基于matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形。
该库是可视化的下一步。我们只需一个命令就可以绘制漂亮的图,甚至可以制作多个图。让我们开始探索seaborn。随附的GitHub存储库见评论区。
汇入资料
为了了解各种地块,我从Kaggle选择了一个有关“ 加州住房价格”的数据集。因此,我的第一步是导入pandas允许我读取CSV文件的库,然后使用来打印行数,列名和前5行head(5)。
import pandas as pd dataset = pd.read_csv("dataset.csv") print("Dataset: {}".format(dataset.shape)) print("Columns: {}".format(dataset.columns)) dataset.head(5) ## Output # Dataset: (20640, 10) # Columns: Index(['longitude', 'latitude', 'housing_median_age', 'total_rooms', # 'total_bedrooms', 'population', 'households', 'median_income', # 'median_house_value', 'ocean_proximity'], # dtype='object')
我们的数据集有20640行和10列,其名称在上面的要点中进行了描述。我们还看看前5行是什么样子。
Seaborn
让我们从导入开始matplotlib。请注意,我使用的是matplotlib版本3.0.3,而不是最新版本,因为存在一个会破坏热图并使其无效的错误。然后,我导入了seaborn。最后,为了确保Jupyter中的图显示在笔记本中,我们使用命令%matplotlib inline。
import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline
让我们开始探索情节!
散点图
当我们想要显示两个要素或一个要素与标签之间的关系时,散点图很有用。这非常有用,因为我们还可以描述每个数据点的大小,为它们涂上不同的颜色并使用不同的标记。让我们看看seaborn的基本命令是做什么的。
sns.scatterplot(x = 'total_rooms', y = 'total_bedrooms', data = dataset)
上图描述了total_rooms和之间的关系total_bedrooms。只需执行一个命令即可完成所有工作,但要等待,还有更多。
使用figsize,我将尺寸增加到12x8。然后,我将scatterplot命令更新为每个数据点的大小基于median_house_value,颜色使用hue基于ocean_proximity和标记使用style基于基于ocean_proximity。另外,如果没有适当的标题和轴标签,则绘图是不完整的,因此我也添加了它们。
plt.figure(figsize = (12, 8)) sns.scatterplot(data = dataset, x = 'total_rooms', y = 'total_bedrooms', hue = 'ocean_proximity', style = 'ocean_proximity') plt.title("California Rooms vs Bedrooms") plt.xlabel("Total rooms") plt.ylabel("Total bedrooms")
如您所见,此图看起来比以前的图好很多,并且还包含一个不错的图例,因此任何人都可以看到和理解该图-应当是这样。
计数图
计数图根据某个类别列自动对数据点进行计数,并将数据显示为条形图。这在分类问题中非常有用,在分类问题中,我们要查看各种类的大小是否相同。但是,由于这不是分类数据,并且只有一个分类列,因此我决定使用它。
seaborn中的地块使我们也可以text使用来添加到每个条annotate。在仔细查看数据集时,我们发现缺少许多元数据信息。例如,该列具有尚未在任何地方描述ocean_proximity的值<1H OCEAN。人们应该始终收集元数据信息,并使用具有适当信息的数据集。由于这只是用于理解图的参考数据集,因此没什么大不了的。
plt.figure(figsize = (12, 8)) ocean_plot = sns.countplot(x = 'ocean_proximity', data = dataset) for p in ocean_plot.patches: ocean_plot.annotate(p.get_height(), (p.get_x() + p.get_width() / 2.0, p.get_height()), ha = 'center'x, va = 'center', xytext = (0, 5), textcoords = 'offset points') plt.title("Count of houses based on their proximity to ocean") plt.xlabel("Proximity to the ocean") plt.ylabel("Count of houses")
在上图中,我们可以看到该列的数据高度不对称。带有条形文字非常有用,因为ISLAND仅通过查看绘图,最后一个类型看起来就好像是零值。
直方图
直方图是显示连续数据点并查看其分布方式的有效方法。我们可以看到,大多数值位于较低端,较高端或均匀分布。
的dist在seaborn情节既产生的直方图,以及基于所述数据图的密度线。我定义了总共10个垃圾箱,以便将整个垃圾箱median_house_value分配到10个不同的存储桶中。
plt.figure(figsize = (12, 8)) sns.distplot(a = dataset['median_house_value'], bins = 10, hist = True) plt.title("Density and histogram plot for Median house value") plt.xlabel("Median house value") plt.ylabel("Value")
如我们所见,该分布似乎很正常,较高端略有尖峰。上图中的蓝线定义了密度的分布。
小提琴图
在与seaborn合作之前,我经常在各种文章中看到这些看起来很怪异的情节,并且想知道它们是什么。然后,我了解了它们,发现它们是小提琴图,与箱形图非常相似,并根据密度描绘了宽度以反映数据分布。在Seaborn中,创建小提琴图只是一个命令。
plt.figure(figsize = (12, 8)) sns.violinplot(x = 'ocean_proximity', y = 'median_house_value', data = dataset) plt.title("Box plots of house values based on ocean proximity") plt.xlabel("Ocean proximity") plt.ylabel("Median house value")
在继续进行之前,让我们看看如何理解这些图。考虑一下绿色情节INLAND。从零延伸到大约250000的黑线是95%的置信区间。内部的黑色粗块是四分位间距,表示所有数据中约有50%位于该范围内。图的宽度基于数据的密度。我们可以将其理解为该特定数据集的直方图,其中黑线是x轴,完全平滑并旋转了90度。
热图
相关矩阵可帮助我们了解所有功能和标签如何相互关联以及相关程度。该pandas数据框中有一个调用的函数corr()生成相关矩阵,当我们把它输入到seaborn热图,我们得到了一个美丽的热图。设置annot为True可确保相关性也用数字定义。
plt.figure(figsize = (12, 8)) sns.heatmap(dataset.corr(), annot = True)
尽管整个图很有用,但我们可以从查看最后一列开始,并注意每个功能可能如何与标签相关联median_house_value。median_income与标签最相关,值为0.69。
联合图
联合图是我们要绘制的两个要素的散布图与密度图(直方图)的组合。seaborn的联合图使我们甚至可以使用kindas 甚至单独绘制线性回归reg。我使用heightas 8和color 定义了正方形尺寸green。
sns.jointplot(x = "total_rooms", y = "total_bedrooms", data=dataset, kind="reg", height = 8, color = 'g') plt.xlabel("Total rooms") plt.ylabel("Total bedrooms")
绿线描绘了基于数据点的线性回归。
带群图的箱形图
箱形图将信息显示在单独的四分位数和中位数中。与swarm图重叠时,数据点会分布在其位置上,因此根本不会重叠。
plt.figure(figsize = (12, 8)) sns.boxplot(x = 'ocean_proximity', y = 'median_house_value', data = dataset) sns.swarmplot(x = 'ocean_proximity', y = 'median_house_value', data = dataset) plt.title("Box plots of house values based on ocean proximity") plt.xlabel("Ocean proximity") plt.ylabel("Median house value")
从上面的污点中,我们可以看到如何对中的五个类别分别描述箱形图ocean_proximity。数据点揭示了数据如何分布。
对图
该对图会在每对特征和标签之间产生大量的图集。对于特征/标签的每种组合,此图均显示一个散点图,对于其自身的每种组合,均显示一个直方图。绘图本身对于获取手边的数据的本质非常有用。
sns.pairplot(dataset)
上图包含大量信息,而且仅需一条命令即可获得。
结论
在本文中,我们探索了一些无限的海洋图,这些图可以用来更好地理解图书馆的工作方式和能力。继续练习和尝试,因为选择几乎是无限的。
相关推荐
- 大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍
-
“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...
- 电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器
-
在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...
- 设置了加密密码zip文件要如何打开?这几个方法可以试试~
-
Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...
- 大文件想要传输成功,怎么把ZIP文件分卷压缩
-
不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...
- 高效处理 RAR 分卷压缩包:合并解压操作全攻略
-
在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...
- 2个方法教你如何删除ZIP压缩包密码
-
zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...
- 速转!漏洞预警丨压缩软件Winrar目录穿越漏洞
-
WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...
- 文件解压方法和工具分享_文件解压工具下载
-
压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记3
-
1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...
- Python内置tarfile模块:读写 tar 归档文件详解
-
一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...
- 使用python展开tar包_python拓展
-
类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...
- 银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留
-
近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...
- ZIP文件怎么打开?2个简单方法教你轻松搞定!
-
在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...
- Ubuntu—解压多个zip压缩文件.zip .z01 .z02
-
方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...
- 如何使用7-Zip对文件进行加密压缩
-
7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)