乐趣区

关于人工智能:用Seaborn绘制图表

作者 |Jenny Dcruz
编译 |VK
起源 |Towards Datas Science

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

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

  1. 用 Pandas 进行数据分析:https://towardsdatascience.co…
  2. 应用 Matplotlib 进行可视化:https://towardsdatascience.co…

确保零碎中装置了必要的库:

应用 conda:

conda install pandas
conda install matplotlib
conda install seaborn

应用 pip:

pip install pandas
pip install matplotlib
pip install seaborn

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

你能够在这里找到本教程的 CSV 文件:https://github.com/jendcruz22…

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.show()

咱们能够察看到口袋妖怪每个属性的值散布。小提琴较厚的区域意味着值的密度更高。小提琴图的两头局部通常比拟厚,这意味着那里的值密度很高。咱们比拟了下一个口袋妖怪的攻打类型。为此,让咱们应用雷同的小提琴绘图办法。

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 可视化数据。

你能够在这里找到本文的代码和数据集:https://github.com/jendcruz22…

感激你的浏览!

参考援用

[1] Seaborn 文档:https://seaborn.pydata.org/

原文链接:https://towardsdatascience.co…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

退出移动版