调查数据并从中提取信息和趋势的工具。
绿色代表新的开始和成长,也意味着更新和丰富。
数据可视化在数据挖掘中起着非常重要的作用。各种数据科学家花费了他们的时间通过可视化来探索数据。为了加快这一进程,我们需要有合适的工具。
没有规划的情况下,资源也无法转化为有价值的商品。因此,我希望本文能够为您提供关于所有可视化方法的架构。
目录
- 简介
- 了解你的数据
- 分布曲线 a. 直方图b. 联合图c. 配对图d. Rug图
- 分布图a. 条形图b. 统计图c. 箱型图d. Violin图
- 高级绘制方法a. Strip图b. Swarm图
- 矩阵图a. Heat Mapb. Cluster Map
- 网格a. Facet Grid
- 回归图
简介
Seaborn是一个基于matplotlib的Python数据可视化库。它提供了一个高级界面,以绘制曲线和信息统计图形。
您可以在命令行中运行以下任何一个命令来安装Seaborn。
代码语言:javascript复制pip install seaborn
conda install seaborn
运行以下命令可以导入seaborn。
代码语言:javascript复制import seaborn as sns
了解你的数据
图中使用的数据集为著名的泰坦尼克数据集(图1),下面将数据集用变量df表示。
图1:泰坦尼克数据集
分布曲线
我们可以使用这些图来理解数据的平均值、中位数、范围、方差、偏差等。
a. 直方图
- Dist plot给出了所选连续变量的直方图。
- 这是单变量分析的一个例子。
- 我们可以改变箱子的数量,即直方图中垂直条的数量
import seaborn as sns
sns.distplot(x = df['age'], bins = 10)
图2:乘客“年龄”分布图。
- 这里x轴表示年龄,y轴表示频率。例如,对于Bins= 10的分布图,大约有50个人年龄在0到10岁之间
b.联合图
- 它是两个变量的组合。
- 这是一个二元分析的例子。
- 我们还得到了变量之间的散点图来反映它们的线性关系。我们可以自定义散点图为六边形图,其中,颜色越深,出现的次数就越多。
import seaborn as sns
# For Plot 1
sns.jointplot(x = df['age'], y = df['Fare'], kind = 'scatter')# For Plot 2
sns.jointplot(x = df['age'], y = df['Fare'], kind = 'hex')
图3:“年龄”和“票价”的联合图
- 我们可以看到,年龄和票价之间并没有合适的线性关系。
- kind = ' hex '提供了六边形图,kind = ' reg '提供了图形上的回归线。
c.配对图
- 它取数据的所有数值属性,绘制两个不同变量的两两散点图和同一变量的直方图。
import seaborn as sns
sns.pairplot(df)
图4:泰坦尼克号数据集配对图
d.Rug图
- 它画了一条线,而不是像在直方图中那样二维分布图。
- 这是单变量分析的一个例子。
import seaborn as sns
sns.rugplot(x = df['Age'])
图5:乘客“年龄”的Rug图
分类图
这些图帮助我们理解分类变量。我们可以用它们进行单变量和双变量分析。
a.条形图
- 这是一个二元分析的例子。
- 在x轴上有一个分类变量,在y轴上有一个连续变量。
import seaborn as sns
sns.barplot(x = df['Sex'], y = df['Fare'])
图6:“车费”和“性别”的条形图
- 我们可以推断出女性的平均票价比男性高。
b.统计图
- 它计算分类变量出现的次数。
- 这是单变量分析的一个例子。
import seaborn as sns
sns.countplot(df['Pclass'])
图7:是否幸存和' P-class '的计数图。
c.箱型图
- 这是一个总结图。它给出了一个连续变量的最大值、最小值、平均值、第一个四分位数和第三个四分位数的信息。同时,它让我们掌握了离群值的信息。
- 我们可以对一个连续变量进行绘图,也可以根据一个连续变量分析不同的分类变量。
import seaborn as sns
#For plot 1
sns.countplot(df['Pclass'])#For plot 2
sns.boxplot(y = df['Age'], x = df['Sex'])
图8:a)“年龄”的箱形图,b)“年龄”和“性别”不同类别的箱形图
d.Violin图
它类似于箱型图,但它也提供了关于数据分布的补充信息。
代码语言:javascript复制import seaborn as sns
sns.violinplot(y = df['Age'], x = df['Sex'])
图9:“年龄”和“性别”之间的violin图
高级绘制方法
a.strip图
- 这是一个连续变量和分类变量之间的图。
- 它以散点图为主,但补充使用分类变量的分类编码。
import seaborn as sns
sns.stripplot(y = df['Age'], x = df['Pclass'])
图10:“年龄”与“p-class”之间的条形图
- 我们可以看到,1班和2班没有10岁左右的儿童,60岁以上的儿童多集中在1班。
- 通常,这种图被用来填补缺失值。
b.swarm图
- 这是一个strip图和violin图的结合。
- 除了数据点的数量,它还提供了它们各自的分布。
import seaborn as sns
sns.swarmplot(y = train['Age'], x = train['Pclass'])
图11:‘年龄’与‘P-class’之间的swarm图
矩阵图
这些是使用二维矩阵数据进行可视化的特殊类型的图形。由于矩阵数据的维数较大,很难对其进行分析和可视化。因此,通过为矩阵数据提供颜色编码,使这个更容易。
a.热力图
- 在给定的原始数据集“df”中,我们有七个数值变量。那么,让我们在这七个变量之间生成一个相关矩阵。
df.corr()
图12:关联矩阵
- 虽然只有49个值,但要读取每个值似乎非常困难。因为我们遍历数以千计的特征。 所以,让我们尝试实现一些颜色编码,这会大大简化模型。
sns.heatmap(df.corr(), annot = True, cmap = 'viridis')
图13:泰坦尼克号数据集的关联矩阵热图。
- 同样的矩阵现在表达了更多的信息。
- 另一个非常明显的例子是使用heatmap来理解缺失的值。在图14中,黄色的虚线表示一个缺失的值,因此它使我们的任务更容易识别缺失的值。
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')
图14:泰坦尼克号数据中缺失值的热图。
b.聚类图
- 如果我们有一个矩阵数据,并想要根据其相似性对一些特征进行分组,聚类映射可以帮助我们。先看一下热图(图13),然后再看一下聚类图(图15)。
sns.clustermap(tran.corr(), annot='True',cmap='viridis')
图15:泰坦尼克号数据关联矩阵的聚类图
- x-label和y-label是一样的,但是它们协调的方式不同。这是因为它们是根据它们的相似性分组的。
- 顶部和左侧的类似流程图的结构描述了它们的相似程度。
- 聚类图使用层次聚类来形成不同的集群。
网格
网格图为我们提供了对可视化的更多控制,并通过一行代码绘制各种各样的图形。
a.面网格
- 假设我们想要绘制所有三类票中男性和女性的年龄分布,我们总共有6个图。
sns.FacetGrid(train, col = 'Pclass', row = 'Sex').map(sns.distplot, 'Age')
图16:“性别”和“p-class”的“年龄”分布图
- 面网格可以按要求提供非常清晰的图形。
- sns.FacetGrid( col = ‘col’, row = ‘row’, data = data) 提供一个包含col和行中所有唯一类别的空网格。之后,我们可以使用不同的图和常见的变量来进行特殊的变化。
回归图
这是一个更高级的统计图,它提供了散点图以及对数据的线性拟合。
代码语言:javascript复制sns.lmplot(x = 'Age', y = 'PassengerId', data = df, hue = 'Sex)
图17:男女乘客年龄与身份证的回归图。
图17为男女乘客身份证与年龄的线性回归拟合。
总结
在本文中,我们看到了14种使用seaborn的可视化技术。
我相信数据可视化增强了我们对数据解释的理解和潜力。它给我们提供了更令人满意的技能来表示数据,输入缺失值,识别异常值,检测异常,以及更多。
数据分析师就像警察一样,需要询问数据并通过它们得到信息。使用合适的工具来完成这项工作是非常必要的。因此,我希望这篇文章能够成为您查询数据的工具。
作者:Aayush Ostwal
deephub翻译组:孟翔杰