这是教你如何使用 Python 代码处理数据表的系列博文中的第二篇。本文将介绍如何处理 pandas DataFrame 对象的列。
如果您不熟悉 pandas 库,请查看本博文系列的第 1 部分(基础知识)。
本系列中的每篇文章都附带一个 Microsoft Excel 工作簿,您可以下载并使用它来培养自己的技能。本文的工作簿可在此下载。
为了方便起见,以下是本系列所有博文的链接
- 第 1 部分 - 基础知识
- 第 2 部分 - 使用列(本文)
- 第 3 部分 - 过滤表格
- 第 4 部分 - 数据清理和整理
- 第 5 部分 - 合并表格
**注意:** 要重现本文中的示例,请安装Excel 中的 Python 试用版。如果您喜欢本博文系列,请查看我的 Anaconda 认证课程,使用 Excel 中的 Python 进行数据分析。
访问列
本系列的上一篇博文概述了如何使用 pandas 库在 Python 中表示数据表。您还学习了如何将 Microsoft Excel 知识映射到 Python 代码。
将您的 Excel 知识映射到 Python 将在本系列中反复出现。就像您在 Excel 中使用函数处理数据列一样,您在编写 Python 代码时也会这样做。
例如,在 Excel 中,通常将函数应用于列以清理数据或计算某个值(例如,平均值)。当您进入更高级的数据分析场景(例如,聚类分析)时,您将使用 Python 代码执行相同的操作。
您可以使用多种选项来访问 pandas DataFrame 对象的列。本文将重点介绍其中一个最灵活的选项,后续的博文将介绍其他方法。
考虑一下您将如何编写 Excel 代码来访问InternetSales 表的SalesAmount 列
上面的 Excel 公式将SalesAmount(一列)视为InternetSales 对象(一个表)的属性**。**DataFrame 对象的工作方式类似。
以下 Python 代码访问internet_sales 对象(一个 DataFrame)的SalesAmount(一个 pandas Series)。
DataFrame 通过使用方括号提供对列的访问。使用此选项时,您将提供要访问的列名作为带引号的字符串。
Python 编码约定是使用单引号,但使用双引号(例如,“SalesAmount”)也是有效的。
通过这种方式访问 DataFrame 列的主要优势在于,它支持复杂的列名(例如,包含空格的名称)。
您还可以使用方括号同时访问多个列。但是,这要求您使用称为 Python 列表的东西。Python 列表是一种声明值集合的方式。
有关 Python 列表的更多信息,请查看来自 Anaconda 的本课程。
以下 Python 代码访问internet_sales DataFrame 的TotalProductCost 和SalesAmount 两列
上面的 Python 代码有一对嵌套的方括号。内部一对方括号创建了包含两个值的 Python 列表
- ‘TotalProductCost’
- ‘SalesAmount’
Python 列表在编写 pandas 代码时很常见。您将在后续的博文中看到更多示例。为简单起见,本文将只处理一个 DataFrame 列(即 pandas Series 对象)。
处理数字列
作为一名 Excel 分析师,您通常会处理数字列。在处理新数据集时,通常会计算数字列的汇总统计信息。使用汇总统计信息可以深入了解数字列中值的分布情况。
汇总统计信息的示例包括
- 值的计数
- 最小值
- 平均值
- 最大值
使用 Excel 进行汇总统计
以下 Excel 代码显示了计算InternetSales 表的SalesAmount 列的汇总统计信息
图 5 的输出告诉我们,最小SalesAmount 为 2.29 美元,平均SalesAmount 为 486.087 美元。即使只计算了两个汇总统计信息,我们已经了解了有关SalesAmount 列的很多信息
- 与平均值相比,销售额可能相对较小。
- SalesAmount 值的分布可能存在偏斜。
使用 Python 进行汇总统计
从概念上讲,使用 Python 中的 pandas 库计算汇总统计信息与使用 Microsoft Excel 相同——您请求对值集合运行函数。Python 函数名称通常与 Excel 中的相同!
以下是如何使用 Python 查找SalesAmount 列的最小值。
首先,使用PY() 函数创建 Python 公式
接下来,当您键入“(”时,单元格会指示它包含 Python 代码
您可以使用 pandas Series 对象的min() 方法获取列中包含的最小值
在键盘上按<Ctrl+Enter> 将运行 Python 代码并生成输出
平均值的另一个名称是**均值**。以下 Python 公式使用 pandas Series 的mean() 方法计算SalesAmount 列的平均值
使用<Ctrl+Enter> 运行上面的 Python 公式将生成以下输出
如上所示,用于计算汇总统计信息的 pandas 代码与 Excel 代码非常相似。虽然上面的示例很简单,但重要的是您在处理 pandas Series 对象时使用的 Python 代码模式。
在后续的博文中,您将学习如何从现有列创建 DataFrame 中的新列,以提供对数据的更多洞察。此过程称为**特征工程**,它建立在您在本博文中学习的技能基础上。
使用 Python 描述数字列
pandas Series 数据类型提供了一种方便的方法来计算多个汇总统计信息——describe() 方法。以下代码在SalesAmount 列上调用describe() 方法
运行 Python 公式将生成一个包含计算的汇总统计信息的新 pandas Series 对象。使用鼠标悬停在卡片上
单击卡片将显示 Series 对象的内容
由describe() 方法返回的 Series 对象提供了有关SalesAmount 列的大量信息,并且比编写许多 Excel 公式来调用相应的 Excel 函数更快/更轻松
- 在 60,398 个值中,50% 低于 30 美元——尽管平均值为 486.087 美元。
- 75% 的值低于 540 美元。
- SalesAmount 列存在偏斜,有很多小值,但相对较少的大值。
可用于处理数字 pandas Series 对象的方法还有很多。有关更多信息,请查看在线文档。
处理文本列
文本是商业数据的一种常见形式。文本数据有多种形式——产品名称、地理位置、地址等。在 Python 中,术语**字符串**用于指代文本数据。
清理和转换字符串数据非常普遍。作为一名 Excel 分析师,您很有可能在使用分析之前对字符串数据进行过整理。整理字符串数据的一些常见示例包括
- 将字符串转换为大写/小写
- 提取子字符串
- 替换字符串的部分内容
- 删除特殊字符
使用 Excel 进行字符串整理
以下 Excel 代码显示了处理字符串数据时常见的整理数据场景——删除逗号。
InternetSales 表的ProductName 列是包含逗号的字符串数据
以下 Excel 代码将“ProductName”列中所有逗号后跟空格(即“, ”)的实例替换为管道字符(即“|”)。
这种类型的字符串处理在使用逗号分隔值 (CSV) 文件共享数据时很常见。
运行上述 Excel 代码将生成以下输出。
在 Excel 中执行的所有字符串处理操作都可以在 Python 中使用。要使用 Python 进行字符串处理,您需要将您的 Excel 知识映射到适用的 pandas Series 方法。
使用 Python 进行字符串处理
使用 pandas Series 对象执行字符串处理时,第一步是使用 str 属性。使用 str 属性可以访问您执行字符串处理所需的方法。
replace() 方法提供类似于 Excel 的 SUBSTITUTE() 函数的功能。以下代码将所有“, ”实例替换为“|”。
replace() 方法返回一个新的 pandas Series 对象,其中包含处理后的字符串数据。这类似于您在运行 SUBSTITUTE() 函数后在 Excel 工作表中看到的。
上述 Python 代码将新的 Series 对象存储在名为 prod_name_clean 的变量中。使用命名变量可以让您轻松地在以后可能编写的 Python 公式中重用该对象。
您可以通过将鼠标悬停在单元格中的卡片上并单击来检查此对象的内容。Excel 将提供 prod_name_clean Series 对象内容的预览。
方便吧?鉴于字符串数据在分析中是多么普遍,str 属性提供了许多用于处理字符串数据的方法。有关更多信息,请查看 在线文档。
下一步是什么?
这篇博文简要介绍了如何使用 DataFrames 的列(即 Series 对象)。
pandas Series 数据类型提供了与 Microsoft Excel 相当的功能,用于处理数据列。例如,Series 数据类型提供了处理日期/时间数据的完整功能。
使用 pandas DataFrame 和 Series 对象是更高级 Python 数据分析场景(如可视化、预测建模和聚类分析)的基本技能。
本系列的 下一篇文章 将向您介绍处理数据表时的另一个基本概念:过滤。
如果您想了解有关使用 pandas 处理数据表的更多信息,请参加此针对 数据分析的 pandas 入门课程 的初学者课程,并查看官方的 pandas 用户指南。
免责声明:截至本文发表,Microsoft Excel 中的 Python 集成处于 Beta 测试阶段。功能和函数可能会发生变化。如果您在此页面上发现错误,请随时联系我们。
个人简介
Dave Langer 成立了 Dave on Data,在那里他提供针对任何专业人士的培训,以培养数据分析技能。多年来,Dave 已培训了数千名专业人士。此前,Dave 在 Schedulicity、Data Science Dojo 和 Microsoft 提供了推动业务战略的见解。