《Pandas1.x实例精解》新书抢先看!

掌握Pandas数据分析杀手锏,《Pandas1.x实例精解》新版来了!


扫码关注《Python学研大本营》,加入读者群,分享更多精彩

介 绍

作为一名数据分析人员,在将数据集作为DataFrame导入工作区后,首先要考虑的是遇到数据集时应采取的步骤。是否有一组通常负责检查数据的任务?你是否了解所有可能的数据类型?对此,本章将为你介绍首次接触新数据集时可能要执行的任务。此外,本章还将解决一些与数据分析有关的常见问题,这些问题在Pandas中解决起来并不那么容易。

开发数据分析例程

尽管开始进行数据分析时并没有一个标准方法,但是一般来说,最好还是在首次检查数据集时为自己开发一个例程。这有点类似于我们日常的起床、洗嗽、上班、就餐等例程,数据分析例程可以帮助你快速熟悉新数据集。该例程也可以表现为动态任务清单,将随着你对Pandas的熟悉和数据分析的扩展而不断发展。

探索性数据分析(exploratory data analysis,EDA)是一个术语,用于描述分析数据集的过程。一般来说,探索性数据分析不涉及模型创建,而是汇总数据特征并对其进行可视化。这并不是什么新鲜事物,John Tukey早在1977年的Exploratory Data Analysis (《探索性数据分析》)一书中就对此进行了推广。

这些过程有许多在今天仍然适用,并且对于理解数据集非常有帮助。实际上,它们还可以在以后帮助创建机器学习(machine learning,ML)模型。

本秘笈讨论探索性数据分析的一小部分,也是最基础的一部分:以常规和系统性的方式收集元数据(metadata)和描述性统计信息(descriptive statistics)。我们简要介绍了第一次将任何数据集作为Pandas DataFrame导入时可以执行的一组标准任务。此秘笈可能有助于形成你在首次检查数据集时实现的例程的基础。

元数据可以描述数据集,或者更恰当地说,它是关于数据的数据。元数据的示例包括列数/行数、列名称、每列的数据类型、数据集的来源、收集日期、各个列的可接收值等。

单变量描述性统计信息(univariate descriptive statistics)是有关数据集变量(列)的摘要统计信息,独立于所有其他变量。

实战操作

首先,我们将收集college数据集中的一些元数据,然后是每列的基本摘要统计信息。

(1)读取数据集,并使用.sample方法查看行的样本。

>>> import pandas as pd
>>> import numpy as np
>>> college = pd.read_csv("data/college.csv")
>>> college.sample(random_state=42)

(2)使用.shape属性获取DataFrame的维度。

>>> college.shape 
(7535, 27)

(3)使用.info方法列出每列的数据类型、非缺失值的数量以及内存使用情况。

>>> college.info()
<class 'pandas.core.frame.DataFrame'> 
RangeIndex: 7535 entries, 0 to 7534 
Data columns (total 27 columns):
dtypes: float64(20), int64(2), object(5) 
memory usage: 1.6+ MB

(4)获取数字列的摘要统计信息,并转置DataFrame以获得更容易阅读的输出。

>>> college.describe(include=[np.number]).T

(5)获取对象(字符串)列的摘要统计信息。

>>> college.describe(include=[np.object]).T

原理解释

在导入数据集后,一个常见的任务是输出DataFrame的行样本,以使用.sample方法进行手动检查。.shape属性可以返回一些元数据;另外,.shape属性也是一个包含行数和列数的元组。

.info方法是一次获取更多元数据的方法。该方法可以提供每列的名称、非缺失值的数量、每列的数据类型以及DataFrame大致的内存使用情况。一般来说,Pandas中的列只有一个类型(但是,也可能会有包含混合类型的列,并将其报告为object)。总的而言,DataFrame可能由具有不同数据类型的列组成。

上述步骤(4)和步骤(5)生成了有关不同类型列的描述性统计信息。默认情况下,.describe方法可以输出所有数字列的摘要,并静默删除所有非数字列。你也可以将其他选项传递给include参数,以使其包含具有非数字数据类型的列的计数和频率。从技术上讲,数据类型是分层结构的一部分,在该分层结构中,np.number位于整数和浮点数的上方。

如前文所述,我们可以将数据分类为连续数据或分类数据。连续数据始终是数字,通常可以具有无限数量的可能性,如身高、体重和薪水等;分类数据则表示具有有限可能性的离散值,如种族、就业状况和汽车颜色等。分类数据可以用数字或字符表示。 分类列通常是np.object类型或pd.Categorical类型。步骤(5)中的项目同时代表了这两种类型。

在步骤(4)和步骤(5)中,输出DataFrame都通过.T属性进行转置。这可以使包含许多列的DataFrame更易于阅读,因为.T属性通常允许更多数据在屏幕上显示而无须滚动。

扩展知识

与数字列一起使用时,可以指定从.describe方法返回的精确分位数。

>>> college.describe(
...  include=[np.number],
...  percentiles=[
...   0.01,
...   0.05,
...   0.10,
...   0.25,
...   0.5,
...   0.75,
...   0.9,
...   0.95,
...   0.99,
...  ],
... ).T

推荐书单

《Pandas1.x实例精解》

本书详细阐述了与Pandas相关的基本解决方案,主要包括Pandas基础,DataFrame基本操作,创建和保留DataFrame,开始数据分析,探索性数据分析,选择数据子集,过滤行,对齐索引,分组以进行聚合、过滤和转换,将数据重组为规整形式,组合Pandas对象,时间序列分析,使用Matplotlib、Pandas和Seaborn进行可视化,调试和测试等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。

链接:https://u.jd.com/9IOYicg

精彩回顾

想用Python赚钱?——安排!

【案例】如何使用Flask构建天气预报 

手把手教你创建简单的Python Flask

扫码关注《Python学研大本营》,加入读者群,分享更多精彩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值