本文是基于StackAbuse的一篇讲解Seaborn的文章 上编写。 附示例及实现代码,可直接前往文末 一键克隆代码 进行实践研究。
在前一篇文章 Pandas数据可视化工具——Seaborn用法整理(上),我们了解了如何使用这些Seaborn代码绘制分布图和分类图。在本文中,我们将继续讨论Seaborn提供的一些其他以绘制不同类型统计图的功能,我们将从矩阵图开始讨论。
矩阵图
矩阵图是一种以行和列的形式显示数据的图。Heat maps是矩阵图的一个典型例子。
Heat Maps
Heat Maps通常用于以矩阵形式绘制数值列之间的相关性。这里需要提到的是,要绘制矩阵图,需要有关于行和列的有价值的信息。延续上一篇文章的主题,我们将使用财报数据10-18年的数据,看看行和列标题是否都是有意义的信息。执行以下代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = DataSource('financial_statement_CN_STOCK_A').read(start_date='2010-04-01',end_date='2018-04-02')
df.head()
在输出中,您将看到如下结果:
从输出中可以看到,列标头包含有用的信息,如股票代码、日期、固定资产、营业利润等。而行标头只包含索引0、1、2等。一种方法是调用数据集上的corr()方法。函数的作用是:返回数据集中所有数字列之间的相关性。执行以下代码:
df_0 = df[['date','instrument','fs_operating_profit','fs_current_assets','fs_net_profit_ttm','fs_roe','fs_gross_profit_margin','fs_free_cash_flow']]
df_0.corr()
(这里为了使结果图简洁,只选择了六个统计量。)
在输出中,您将看到各列之间的相关系数,如下所示:
现在,要创建具有这些相关值的Heat Maps,需要调用heatmap()函数并将相关系数的DataFrame传递给它。请看下面的代码:
sns.heatmap(df_0.corr())
在输出中,您将看到如下结果:
从输出中可以看出,heatmap的基本功能是为行和列值的每个组合绘制一个框。图像的颜色取决于渐变。例如,在上面的图像中,如果两个特征之间有很高的相关性,对应的单元格或者方框是白偏向于色的,另一方面,如果没有相关性,对应的单元格是黑色的。
通过为传递参数annot为True,相关系数也可以绘制在heatmap上。执行下面的代码,看看这是否有效:
sns.heatmap(df_0.corr(), annot=True)
您还可以通过给cmap传递参数来更改heatmap的颜色。现在,看看下面的代码:
sns.heatmap(df_0.corr(), cmap='winter')
结果如下&#