相关分析散点图怎么做(散点图箱线图核密度函数)
全文共2286字,预计学习时长9分钟
图源:dayliscrawl
作为数据分析对外输出的关键环节,可视化技术可是数据科学家的必备技能之一。各种各样的图标花样繁多,可别被这些炫酷的“造型”吓退了。
本文将介绍九种不同的可视化技术,可以用来分析任何数据集,并且大多数都只需要少输入一行代码。就两个字,好用!
加载数据集和快速浏览数据
为简单起见,使用可从scikit-learn库加载的Iris数据集,输入以下代码:
from sklearn.datasets importload_iris
import pandas as pddata = load_iris()
df = pd.DataFrame(data['data'], columns=data['feature_names'])
df['species'] = data['target']
df.head()
可以看到,我们有一个只有5列的数据集。使用数据框上的info()函数对其进行快速分析: df.info()
如图可见,只有150个条目,在任何一列中都没有丢失值。
此外,还可以看到前四列有浮点值,而最后一列只允许出现整数。事实上,根据数据集描述,我们知道“物种”列只取三个值,每个值代表一种花。
要确认这一点,可以对该列使用unique()函数:
df.species.unique()
array([0, 1, 2])
确实,“物种”列只取三个值:0、1和2。
了解了数据集的基本信息之后就可以进行可视化了。请注意,如果列中缺少一些值,应该对其进行删除或填充。我们稍后将讨论的一些技术不允许出现丢失值。
线形图
从一个简单的线状图开始可视化。选中整个数据框。
df.plot()
如图可见,它已经根据索引值(x轴)绘制了不同颜色的所有列值。这是不为函数提供x轴参数时的默认行为。
现在看来这个图不是很有用。如果x轴是一个时间序列,那么线图是一个很好的选择。我们可能会在数据中看到一些时间上的趋势。
在本例中,只能看到数据是按“物种”列排序的(图中紫色的步骤),并且其他列的移动平均值遵循该模式(花瓣长度,特别是红色标记的花瓣长度)。
散点图
这是一种将两个连续变量之间的关系可视化的完美图表。通过散点图来分析萼片长度和萼片宽度的关系。
df.plot.scatter(x='sepal length(cm)', y='sepal width (cm)')
为了生成此图,需要通过其列名来指定图的x轴和y轴。这个图表显示这两个变量之间没有很强的相关性。让我们来检查另一对萼片长度和花瓣长度:
df.plot.scatter(x='sepal length(cm)', y='petal length (cm)')
在这种情况下,可以看到当萼片长度增加时,花瓣长度也会增加(当萼片长度大于6厘米时,增加幅度更大)。
饼状图
可以使用饼状图来可视化目标变量的类计数。我们将在这里对正在处理的Iris数据集进行处理。同样需要一些辅助函数,这次使用的是groupby和count。
df.groupby('species').count().plot.pie(y='sepallength (cm)')
这一类目具有完美的比例,因为我们的数据集包含每个类的50个条目。
注意,必须在这里使用y参数并将其设置为某个列名。这里使用了萼片长度列,但它可以是任何列,因为所有列的计数都是相同的。
面积图
还可以为这个数据集创建一个面积图。图中包括所有有厘米的维度,但是要删除“物种”列,因为这些在本例中没有任何意义。
columns = ['sepal length (cm)','petal length (cm)', 'petal width (cm)', 'sepal width (cm)']
df[columns].plot.area()
这张图上的测量值是一个接一个的。这个图表可以让你直观地检查包含在图表中的每个度量之间的比率。所有的数值向之后的条目都有一个增长的趋势。
条形图
当显示条目的平均或计数时,这是一个很好的图表类型。可以用它来计算数据集中每个类型的每个维度的平均值。为此,需要使用groupby和mean函数。
df.groupby('species').mean().plot.bar()
上图非常直观,可以看到不同类型和不同柱的平均测量值存在差异。
箱线图
箱线图也是应该用于数值变量的可视化技术。它可以为所有的测量列绘制箱线图(不包括物种列,因为对于这个分类变量来说,箱线图没有意义)。
columns = ['sepal length (cm)', 'petallength (cm)', 'petal width (cm)', 'sepal width (cm)']
df[columns].plot.box()
plt.xticks(rotation='vertical')
如图所示,所有的箱线图都画在同一张图上。由于没有太多的变量来表示,所以这对我们来说是很好的。注意,必须旋转x标签,不这样做标签的名称会相互重叠。
柱状图
柱状图对于任何连续变量来说都是一个完美的可视化技术。让我们从简单的hist函数开始。
import matplotlib.pyplot as plt
df.hist()
plt.tight_layout()
可以看到,这会为数据集中的每个数值变量生成一个柱状图。要制作图表,就不得不添加一些额外的代码行。这是我调用tight_layout函数的第一个导入行和最后一行。如果不添加这个,标签和子图名可能会重叠并且不可见。
核密度函数
与柱状图类似,可以使用核密度函数:
df.plot.kde(subplots=True,figsize=(5,9))
它给出了与柱状图相似的结果。必须在这里指定一个图形大小,否则图形会在垂直方向上被压得太厉害。
此外,还将subplots参数设置为True,因为在默认情况下,所有的列都会显示在同一个图表上。
散点矩阵图
这是我最喜欢的数据分析的可视化技术之一,因为它可以对数据集中的所有数值及其相关性进行快速分析。
默认情况下,它将为数据帧中的所有数字变量对的散点图和所有数字变量的柱状图。
from pandas.plotting importscatter_matrix
scatter_matrix(df, figsize=(10, 10))
你将得到这个绘制精美的平面图,只用一行代码就能告诉你很多关于数据集的信息。在这组数据中,只需扫一眼就能发现这组数据中的一些变量之间的相关性。唯一需要设置的附加参数是数字尺寸,这是因为图中的地块非常小,默认的图表尺寸很小。
可视化技术是你在数据分析的修炼道路上必不可少的一关,试试将这些知识应用到你所选择的数据集。把数据玩出花,其实很简单。
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com