通过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格式的数据,并使用统计摘要进行了描述。

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

本文的版权归 Giacin 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

CVPR 2018 | 中科大&微软提出立体神经风格迁移模型,可用于3D视频风格化

选自arXiv 作者:Dongdong Chen等 机器之心编译 参与:Nurhachu Null、刘晓坤 近年来,在自然图像上再现名画风格的风格转换技术成为内...

3638
来自专栏媒矿工厂

HDR关键技术:逆色调映射(一)

HDR技术近年来发展迅猛,在未来将会成为图像与视频领域的主流。当前HDR内容非常短缺,限制了HDR视听节目的广泛应用。逆色调映射(Inverse Tone Ma...

4413
来自专栏YoungGy

风格转换简介

风格转换 优化问题 综述 损失函数 训练 例子 代码 网络转换 结构 训练 参考 风格转换,是把一张图片转化成同内容但包含某风格的新图片。本文将介绍如何让机器学...

3045

使用Pandas进行数据分析

在您阅读这篇文章之前,您需要先了解以下内容:

1825
来自专栏Y大宽

Motif和domain的区别

结构域的概念由Wetlaufer于1973年首次提出,他定义结构域为可以自动折叠的稳定的蛋白质结构单位。过去,结构域被描述为,折叠单位,致密结构单位,功能和进化...

921
来自专栏数据小魔方

sparklines迷你图系列12——Composition(Cascade)

今天继续跟大家分享的sparklines迷你图系列12——Composition(Cascade)。 不知道为啥这个图的名字英文看起来这么怪,但是其实他就是我们...

2694
来自专栏AI传送门

吊炸天的CNNs,这是我见过最详尽的图解!(上)

2885
来自专栏智能算法

基于SURF算法相似图像相对位置的寻找

例如以下两个相似证件的模板,若以其中一幅图像为模板,并给出相应的位置,可以给出其他相似图像进行定位相对应的位置,如下图所示,其中除了标题和样式一样,内容确是不同...

3497
来自专栏雷经纬的专栏

老司机带你检测相似图片

本文从从图片的dhash,ahash,phash,颜色分布向量到基于语义的sift,surf,gist特征,构建一套分层相似图片检测系统。本文致力于零基础单机快...

2.2K2
来自专栏腾讯Bugly的专栏

手机端运行卷积神经网络实现文档检测功能(二) -- 从 VGG 到 MobileNetV2 知识梳理(续)

1.3K5

扫码关注云+社区