通过Pandas实现快速别致的数据分析

时间:2022-04-28
本文章向大家介绍通过Pandas实现快速别致的数据分析,主要内容包括数据分析、糖尿病数据集、数据总览、描述数据、可视化数据、特征-分类关系、特征-特征关系、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

在您选择和准备数据进行建模之前,您需要事先了解一些基础内容。

如果您是使用Python进行机器学习,那么您可以使用Pandas库来更好地理解您的数据。

在这篇文章中,您将发现Pandas的一些快速别致的方法,以改善您对数据在其结构、分布和关系等方面的理解。

数据分析

数据分析其实是关于询问和回答有关您的数据的问题。

作为一名机器学习从业者,您可能不太熟悉您所在的领域。有专家随时提供帮助是理想的,但这毕竟不太可能。

当您通过标准机器学习数据集、咨询或参与竞争数据集学习应用机器学习时,这些问题也同样适用。

您需要激发关于您可以追踪的数据的问题,并且,去更好地了解您拥有的数据。您可以通过对数据进行汇总和可视化来做到这一点。

Pandas

Python中的Pandas库是专为进行快速的数据分析和操作而建立的,它是非常简单和容易上手的,如果你在R等其他平台上进行过数据分析等操作。

Pandas似乎只是擅长数据处理方面,但它通过提供statsmodels中的标准统计方法和matplotlib中的绘图方法,使其成为了强大易用的数据分析工具。

糖尿病数据集

我们需要一个小数据集,您可以使用它来探索Pandas中不同的数据分析方法。

UIC机器学习存储库提供了大量不同的标准机器学习数据集,您可以使用这些数据集来学习和练习应用机器学习,我最常用的数据集是皮马印第安人糖尿病数据集。

该数据集通过使用医疗记录中的详细信息,描述了皮马印第安人女性糖尿病发病或未发病的情况。您可以了解有关此数据集的更多信息,点击链接下载该数据集的CSV文件pima-indians-diabetes.data

数据总览

我们将从理解我们所看到的数据结构开始。

加载数据

首先将文件中的CSV数据作为数据框加载到内存中。因为我们知道数据集提供的数据的名称,所以我们将在从文件加载数据时设置这些名称。

import pandas as pd
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pd.read_csv('pima-indians-diabetes.data', names=names)

点击链接,了解有关Pandas IO功能read_csv功能的更多信息。

描述数据

我们现在可以看看数据的结构。

我们可以通过直接打印数据框来查看前60行数据。

print(data)

我们可以看到,所有的数据都是数值型的,而最终的类别值是我们想要预测的因变量。

在数据转储结束时,我们可以看到数据框本身的描述为768行和9列,所以现在我们已经了解了我们的数据结构。

接下来,我们可以通过查看汇总统计信息来了解每个属性的分布情况。

print(data.describe())

这将显示我们数据框中9个属性的各个属性详细分布信息表。具体包括:数量、平均数、标准差、最小值、最大值、第一四分位数、第二四分位数(中位数)、第三四分位数。

我们可以查看这些统计数据,并开始注意与我们的问题有关的有趣事实。如平均怀孕次数为3.8次、最小年龄为21岁,以及有些人的体重指数为0,这种不可能的数据是某些属性值应该标记为缺失值的标志。

点击链接,详细了解数据框的描述统计功能

可视化数据

图表更能说明属性值的分布和其间的关系。

不过,重要的是要先花时间了解数据的统计信息。每次以不同的方式查看数据时,您都有可能使自己注意到不同方面的信息,并可能会对问题产生不同的见解。

Pandas通过matplotlib模块来提供便捷地建立图像的功能。您可以点击链接了解更多有关Pandas中数据可视化的知识。

特征分布

第一个容易查看的性质是每个属性的分布情况。

我们首先可以通过箱线图来了解每个属性数值的散布情况。

import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default'
data.boxplot()

这段代码将绘制图形的样式(通过matplotlib)更改为默认样式,这样效果更好。

箱线图

我们可以看到,测试属性有很多异常值,同时可以看到,plas属性值接近于正态分布。我们还可以通过将每个属性的值进行分段来绘制直方图矩阵,进而观察每个属性的分布情况。

data.hist()

直方图矩阵可以让您清楚地发现各个属性的分布特征,例如接近于正态分布的pres和skin属性。

直方图矩阵

您可以点击链接,查看有关箱线图直方图的详细信息。

特征-分类关系

下一个要探讨的重要关系是每个属性的类属性。

一种方法是可视化每个类的数据实例的属性分布以及注释和差异。您可以生成每个属性的直方图矩阵和每个类值的直方图矩阵,如下所示:

data.groupby('class').hist()

数据按类属性(两组)分组,然后为每个组中的属性创建直方图矩阵。结果是两个图像。

类别0的属性直方图矩阵
类别1的属性直方图矩阵

这有助于指出诸如plas属性的类之间的分布差异。

您可以更好地比较同一图表上每个类的属性值:

data.groupby('class').plas.hist(alpha=0.4)

通过绘制只包含plas一个属性的直方图,将数据按类别分组,其中红色的分类值为0,蓝色的分类值为1。除了部分变动,你可以看到一个近似正态分布的分布图像。这个属性可能会有助于区分类。

每个类的重叠属性直方图

点击链接,您可以阅读有关groupby函数的更多信息。

特征-特征关系

最后要探讨的重要关系是属性之间的关系。

我们可以通过查看每对属性的交互分布来观察属性之间的关系。

from pandas.tools.plotting import scatter_matrix
scatter_matrix(data, alpha=0.2, figsize=(6, 6), diagonal='kde')

这里使用一个构建函数来创建所有属性之间交互关系的散点图矩阵。对角线上显示每个属性自身的Kernel密度估计。

属性散点图矩阵

这是一个强大的图像,从中可以获得很多有关数据的相关性信息。例如,我们可以看到age与preg之间可能存在的相关性,以及skin与mass之间可能存在的关系。

总结

在这篇文章中我们已经涵盖了很多地方。

我们从快速和别致等妙语趣话开始,载入我们的CSV格式的数据,并使用统计摘要进行了描述。

接下来,我们探索了各种不同的方法绘制我们的数据图像来揭示有趣的数据结构。我们观察了箱线图和直方图中数据的分布情况、与类属性相比较的属性分布,以及最后在成对散点图矩阵中属性之间的关系。