热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python数据分析:数据可视化工具Seaborn绘图讲解

前言Seaborn是一个功能强大的Python库,用于增强数据可视化。它为Matplotlib提供了大量高级接口。Seaborn可以很好地处理数据帧,而Matplotlib则不行,

前言

Seaborn是一个功能强大的Python库,用于增强数据可视化。它为Matplotlib提供了大量高级接口。Seaborn可以很好地处理数据帧,而Matplotlib则不行,它可以让你以更简单的方式绘制引人注目的图表。

 

为了更好地理解本文,你需要了解pandas和matplotlib的基础知识。如果没有,可以参考以下文章:

  1. 用Pandas进行数据分析:https://towardsdatascience.com/pandas-for-data-analysis-142be71f63dc
  2. 使用Matplotlib进行可视化:https://towardsdatascience.com/visualizations-with-matplotlib-4809394ea223

确保系统中安装了必要的库:

使用conda:

conda install pandas
conda install matplotlib
conda install seaborn

www#gaodaima.com来源gaodaima#com搞([email protected]

使用pip:

pip install pandas
pip install matplotlib
pip install seaborn

让我们首先导入所需的Python库和数据集。

你可以在这里找到本教程的CSV文件:https://github.com/jendcruz22/Medium-articles/tree/master/Plotting%20charts%20with%20Seaborn

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

df = pd.read_csv("Pokemon.csv", index_col = 0, encoding="unicode-escape")
df.head()

 

在上面的代码中,我们将index_col设置为0,这表示我们将第一列视为索引。

使用seaborn和Pokemon(口袋妖怪)数据集的属性,我们将创建一些非常有趣的可视化效果。我们首先要看的是散点图。

 

散点图

散点图使用点来表示不同数值变量的值。每个点在水平轴和垂直轴上的位置表示单个数据点的值。它们用于观察变量之间的关系。

在seaborn中制作散点图只需要使用“lmplot”函数。为此,我们将dataframe传递给data参数,然后传入x和y轴的列名。

默认情况下,散点图还显示一条回归线,它是一条最适合数据的直线。

sns.lmplot(x=’Attack’, y=’Defense’, data=df)
plt.show()

 

在这里你可以看到我们的散点图,它显示了进攻得分与防守得分的比较。

我们的回归线基本上显示了两轴之间的相关性。在这种情况下,它是向上倾斜的。也就是说当进攻得分越来越高,防守得分也会越来越高。要删除回归线,可以将“fitreg”参数设置为false。

此外,我们可以通过设置hue参数来在Pokemon的进化阶段着色。这个色调的参数是非常有用的,因为它允许你用颜色来表达第三维度的信息。

sns.lmplot(x=’Attack’, y=’Defense’, data=df, fit_reg=False, hue=’Stage’)
plt.show()

 

散点图看起来和之前的一样,除了中间没有回归线,而且每个点的颜色也不同。这些颜色只是显示了每个小精灵的阶段。Stage只是我们之前看到的数据中的另一个属性。

通过这张图,我们可以得出这样的结论:在第一阶段的pokemon(蓝点)通常比在更高阶段的pokemon得分更低。

箱线图

箱线图是常用于显示数据分布的重要图之一。在seaborn中只需要一行代码就可以使用boxplot函数显示箱线图。在本例中,我们将使用除total、stage和legendary属性之外的整个dataframe。

df_copy = df.drop([‘Total’, ‘Stage’, ‘Legendary’], axis=1)
sns.boxplot(data=df_copy)

 

在这里我们可以看到每个属性都有其各自的箱线图。

箱线图基于5个数字摘要,每个摘要以不同的行显示。中间的线是中值,是数据的中心点。箱线图末端的最底部和最顶部的线是四分位数1和4的中位数,基本上显示了分布的最小值和最大值。中间的另外两条线是四分位数2和3的中位数,它们显示了值与中位数之间的差异。超出此范围的单点表示数据中的异常值。

小提琴图

小提琴图与箱线图相似。小提琴图是箱线图非常有用的替代品。它们通过小提琴的厚度来显示分布,而不只是简要的统计。众所周知,小提琴图在分析和可视化数据集中不同属性的分布时非常方便。

在本例中,我们将使用上一个示例中的相同数据帧副本。

sns.violinplot(data=df_copy)
plt.sow()

 

我们可以观察到口袋妖怪每个属性的值分布。小提琴较厚的区域意味着值的密度更高。小提琴图的中间部分通常比较厚,这意味着那里的值密度很高。我们比较了下一个口袋妖怪的攻击类型。为此,让我们使用相同的小提琴绘图方法。

plt.figure(figsize=(10,6))sns.violinplot(x="Type 1", y="Attack", data=df)
plt.show()

 

这个图显示了每个口袋妖怪的主要类型的攻击分数分布。如你所见,“龙”型口袋妖怪的攻击得分最高,但它们也有较高的方差,这意味着它们的攻击分数也非常低。“Ghost”主类型的方差非常低,这意味着它们的大多数数据值都集中在中心。

热图

热图帮助你可视化矩阵类型的数据。例如,我们可以将口袋妖怪不同属性之间的所有关联可视化。

让我们通过调用“corr”函数来计算数据帧的相关性,并使用“heatmap”函数绘制热图。

corr = df_copy.corr()
sns.heatmap(corr)

 

上面的热图显示了我们数据帧的相关性。

长方体的颜色越浅,这两个属性之间的相关性就越高。例如,血量和口袋妖怪的整体速度之间的相关性非常低。因此,盒子的颜色是深色的。HP和防御速度之间的相关性非常高,因此我们可以在热图中看到一个红色方块。我们可以看到,当一个属性变高时,其他属性也会变高,比如防守速度。

直方图

直方图允许你绘制数值分布图。如果我们要使用matplotlib来创建柱状图,那么与使用seaborn创建柱状图相比,这将需要更多的工作。对于seaborn,只需要一行代码就可以创建。

例如,我们可以创建一个直方图来绘制带有攻击属性的分布。

sns.distplot(df.Attack, color=’blue’)

 

我们可以看到大多数口袋妖怪都在50-100之间。我们可以看到,攻击值大于100或小于50的口袋妖怪要少得多。

Calplots公司

与条形图类似,calplots允许你可视化每个类别变量的分布。我们可以使用calplot来查看每种主要类型中有多少口袋妖怪。

sns.countplot(x=’Type 1", data=df)
plt.xticks(rotation=-45)

 

我们可以看到,“水”类的口袋妖怪最多,而“仙女”和“冰”类的口袋妖怪最少。

密度图

密度图显示两个变量之间的分布。例如,我们可以使用密度图来比较口袋妖怪的两个属性:攻击值、防御值。我们将使用”jointplot”函数来完成此操作。

sns.jointplot(df.Attack, df.Defense, kind=’kde’, color=’lightblue’)

 

“kde”表示我们需要一个密度图。

如你所见,绘图区域在黑暗中的变化取决于区域中的值的数量。黑暗区域预示着一种非常牢固的关系。从这个图中我们可以看出,当攻击值在50到75之间时,防御值在50左右。

关于这篇文章。我希望你喜欢用seaborn可视化数据。



推荐阅读
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
author-avatar
怎么又是你呀
你讲话咧,撸起袖子加油干!!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有