Matplotlib Pandas scatter_matrix – 绘制分类变量
在本文中,我们将介绍Matplotlib Pandas scatter_matrix的使用,特别是如何绘制含有分类变量的散点矩阵图。
阅读更多:Matplotlib 教程
散点矩阵图
散点矩阵图是一种展示多个变量之间关系的图表。它将每个变量都绘制成散点图的形式,在矩阵的对角线上是每个变量的分布图,其他位置则是变量之间的散点图。
下面是一个简单的散点矩阵图示例:
import pandas as pd
import seaborn as sns
iris = sns.load_dataset('iris')
sns.pairplot(iris)
我们可以看到,它显示了每个变量的分布,以及它们之间的关系。下面我们将探讨如何将分类变量绘制到这个图中。
在散点矩阵中添加分类变量
在散点矩阵中添加分类变量,需要使用Pandas的scatter_matrix函数,并指定类别列的名称。我们来看一个实际的例子:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
titanic = sns.load_dataset('titanic')
colors = {'male':'#FF5722', 'female':'#03A9F4'}
cols = ['survived', 'pclass', 'age', 'fare', 'sex']
pd.plotting.scatter_matrix(titanic[cols], figsize=(12,12), diagonal='hist',
color=[colors[x] for x in titanic['sex']])
plt.show()
在这个例子中,我们将Titanic数据集中的性别列添加到矩阵中。注意,我们传递一个名为“color”的参数,它的值是一个列表,其中包含了每个数据点的颜色。我们使用一个字典将颜色与性别联系起来,然后使用列表解析将每个数据点映射到该数据点的性别,并将性别转换为对应的颜色。
分箱和标签
有时候,我们需要将连续变量离散化以进行绘图。这可以通过将其分箱来实现。Pandas的cut和qcut函数可以帮助我们进行分箱。
我们用一个例子来说明,比如说我们需要将年龄分成三个类别:18岁以下,18-40岁和40岁以上。我们可以这样实现:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
titanic = sns.load_dataset('titanic')
titanic['age_cat'] = pd.cut(titanic['age'], bins=[0, 18, 40, 100],
labels=['Under 18', '18-40', 'Over 40'])
colors = {'male':'#FF5722', 'female':'#03A9F4'}
cols = ['survived', 'pclass', 'age_cat', 'fare', 'sex']
pd.plotting.scatter_matrix(titanic[cols], figsize=(12,12), diagonal='hist',
color=[colors[x] for x in titanic['sex']])
plt.show()
在这个例子中,我们将年龄列转换为一个带有三个标签的分类变量,然后将其添加到矩阵中。我们使用的是cut函数,它将数据分成均匀间隔的箱子。bins参数指定了箱子的边界,而labels参数指定了每个箱子的标签。
总结
在本文中,我们介绍了如何使用Matplotlib Pandas scatter_matrix函数来绘制散点矩阵图,并将分类变量添加到图中。我们还探讨了如何进行分箱和添加标签,以更好地表达数据。希望本文对你在理解和使用散点矩阵图方面能有所帮助。