如何使用Pandas数据框的列标记气泡图/散点图?
Python是一个强大的数据分析工具,而Pandas和Matplotlib是Python中最流行的数据处理和可视化工具之一。Pandas提供了一个Dataframe对象,它是一个有标签的二维数组,可以轻松进行数据操作和预处理。Matplotlib提供了众多的绘图方法,其中包括气泡图和散点图等数据可视化方法。
在本篇文章中,我们将学习如何使用Pandas数据框的列标记气泡图/散点图。
准备工作
在进行气泡图/散点图绘制之前,我们需要先准备一些数据。我们使用Pandas内置的Iris数据集作为样例。
import pandas as pd
iris = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',
header=None,
names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'])
iris.head()
这里我们使用Pandas的read_csv
方法,从UCI机器学习数据集中读取数据并创建一个名为iris
的Dataframe对象。上面的代码还设置了列名,因为原数据集没有给出列名。iris.head()
方法可以打印出Dataframe的前5行数据。
输出结果:
sepal_length sepal_width petal_length petal_width class
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
绘制散点图
首先,让我们来绘制一个普通的散点图。假设我们想要将sepal_length
作为x轴,sepal_width
作为y轴,并想要使用颜色标记每个点的class
属性。在Matplotlib中,我们可以使用scatter
方法来绘制散点图。以下是代码示例:
import matplotlib.pyplot as plt
colors = {'Iris-setosa': 'r', 'Iris-virginica': 'g', 'Iris-versicolor': 'b'}
iris.plot.scatter(x='sepal_length', y='sepal_width',
c=iris['class'].apply(lambda x: colors[x]),
title='Scatter plot of Sepal Length vs Sepal Width colored by Class')
plt.show()
在上面的代码中,我们创建了一个颜色字典,将每个class
属性对应的颜色存储在其中。然后,我们使用plot.scatter
方法绘制一个散点图。x
和y
参数用于指定绘制的x轴和y轴,c
则用于指定每个点应该使用哪个颜色。在这里,我们使用了一个lambda
函数,将Pandas数据框中每个class
属性对应的颜色字典中的颜色应用到每个点上。
绘制气泡图
接下来,我们来绘制一个气泡图。假设我们想要使用petal_length
作为x轴,petal_width
作为y轴,并想要使用两倍比例的气泡大小来表示每个点的sepal_length
属性。在Matplotlib中,我们可以同样使用scatter
方法来绘制气泡图。以下是代码示例:
import numpy as np
sizes = 2 * iris['sepal_length'].values.astype(float)
iris.plot.scatter(x='petal_length', y='petal_width',
c=iris['class'].apply(lambda x: colors[x]), s=sizes,
alpha=0.5, edgecolors='none',
title='Bubble chart of Petal Length vs Petal Width sized by Sepal Length')
plt.show()
在上面的代码中,我们创建了一个大小数组sizes
,将每个点的sepal_length
属性乘以2后存储在其中。然后,我们使用了一个plot.scatter
方法绘制一个气泡图。x
和y
参数用于指定绘制的x轴和y轴,c
用于指定每个点应该使用哪个颜色,s
用于指定气泡的大小。 alpha
参数用于控制散点的透明度。edgecolors='none'
参数用于去除散点的边框。在这里,我们同样使用了一个lambda
函数,将Pandas数据框中每个class
属性对应的颜色字典中的颜色应用到每个点上。
结论
在本篇文章中,我们学习了如何使用Pandas数据框的列标记气泡图/散点图来进行数据可视化。我们使用了Pandas内置的Iris数据集作为样例,绘制了散点图和气泡图,并对绘制出的图像进行了解读和说明。虽然本篇文章只讨论了Pandas数据框的列标记气泡图/散点图,但实际上,Pandas和Matplotlib还提供了更多种类的绘图方法,让我们能够以各种方式对数据进行可视化。