作为一名 Microsoft Excel 分析师,您知道数据表格是任何分析的原材料。无论原材料是表格工作表数据、Excel 表格还是数据透视表,所有分析都始于表格。
同样,您的 Python 之旅也始于数据表格。这是本系列博客文章的第一篇,旨在快速教会您如何使用 pandas Python 库处理数据表格。
有关 Python 库的更多信息,请观看此简短视频:Excel 中的 Python 包是什么?
如果您不熟悉 pandas 或 Python,请不要担心。所有内容都会解释。
本系列中的所有博客文章都将利用来自 Microsoft 的 AdventureWorks 示例数据库 的数据。
每篇文章还将附带一个 Microsoft Excel 工作簿,供您下载和使用来提升技能。本篇文章的工作簿可供 此处下载。
为了方便起见,这里提供了本系列所有博客文章的链接
- 第一部分 – 基础(本篇文章)
- 第二部分 – 处理列
- 第三部分 – 过滤表格
- 第四部分 – 数据清理和整理
- 第五部分 – 合并表格
注意:要重现本篇文章中的示例,请安装 Python in Excel 试用版。如果您喜欢本系列博客文章,请查看我的 Anaconda 认证课程, 使用 Python 在 Excel 中进行数据分析。
您是一位编码员!
虽然大多数 Excel 分析师不会这样想,但编写代码是使用 Microsoft Excel 分析数据的常见方面。
您在使用 Excel 分析数据时经常编写公式。有时您的公式可能很简单(例如,计算一列的平均值)。有时您的公式可能很复杂(例如,嵌套的 IF() 函数调用)。
无论公式的复杂程度如何,它们都是代码。这种编码知识使学习 Python 比您想象的更容易。
Python 中的所有内容都是对象
Python 是一种面向对象编程 (OOP) 语言。这意味着非常简单。当您编写 Python 代码时,您的代码会与 Python 对象交互。Python 中的所有内容都被视为对象。
以下是好消息。
您已经熟悉使用对象编写代码,因为您是 Excel 分析师。您是否曾经使用表格编写 Excel 公式?那么您就编写了使用对象的代码!
Excel 表格是对象
本博客文章将使用以下 Excel 表格作为运行示例
Excel 中的表格是您在编写公式时使用的“事物”(即对象)。例如,Excel 表格有名称(例如,InternetSales)和列(例如,SalesAmount),这些名称和列在您的公式中使用。
假设您想计算 InternetSales 表格的 SalesAmount 列的平均值。您可以轻松地编写以下代码:
在这段小小的公式代码中,发生了很多事情。从概念上讲,当您按下键盘上的 <Enter> 并执行公式时,会发生以下情况:
- Excel 找到 InternetSales 表格(一个对象)。
- 然后 Excel 找到 SalesAmount 列(另一个对象)。
- 来自 SalesAmount 列的数据被传递给 AVERAGE() 函数。
- AVERAGE() 函数验证数据是否为数字。
- AVERAGE() 函数执行计算并返回结果。
以上只是您编写 Excel 代码以使用对象执行操作的一个示例。
介绍 pandas
与 Microsoft Excel 不同,Python 本身不提供表示数据表格的对象。pandas 库的创建是为了扩展 Python 的功能,使其能够像您在 Excel 中一样处理数据表格。
多年来,pandas 库已成为使用 Python 处理数据表格的事实标准。您对 Excel 数据表格的了解使学习如何使用 pandas 变得非常直观。
您可以将 Python 库(例如 pandas)视为 Excel 加载项。您可以使用加载项(例如 Solver 和 Power Pivot)扩展 Excel 的功能。但是,默认情况下,Excel 加载项未启用 - 您必须明确告诉 Excel 加载加载项。
同样,您必须告诉 Python 加载要使用的库。加载 pandas 库是 Python 编码人员在其代码中最常做的事情之一。
但是,由于 pandas 库非常有用,因此 Microsoft Excel 会自动为您加载它。
使 pandas 按预期运行
与 Python 中的所有内容一样,pandas 数据表格也是对象。Python 对象具有属性(例如名称),并且可以执行操作(例如计算平均值)。
理解这些概念的最简单方法是比较 Excel 代码和 Python 代码。Excel 公式是由对象、属性和函数(即操作)组成的代码。
您可以将这些概念映射到前面的公式代码
上面的公式代码对 InternetSales 对象的 SalesAmount 属性应用了操作(即 AVERAGE() 函数)。
以下 pandas Python 代码实现了相同的结果
第一行以井号(“#”)开头的 Python 代码是一条注释。注释在 Python 中用作对人类的文档。确保您的 Python 代码有良好的注释。未来的您会感谢您的!
如果您不熟悉,则“mean”是“average”的另一个名称。此外,根据 Python 编码规范,表格的名称已更改为 internet_sales。
花点时间比较 Excel 代码和 Python 代码。请注意,Excel 宏中的函数在前面,而 Python 中的对象在前面?这是 Python 面向对象的一个示例。
上面的代码还说明了使用对象进行编码的一个重要方面。SalesAmount 也是一个对象(即一列)。在 Excel 和 Python 中,对象都可以包含其他对象。
Python 对象具有类型
Python 编程中的一个重要概念是数据类型的概念。Python 数据类型类似于 Microsoft Excel 中的数据格式。Excel 数据格式和 Python 数据类型都决定了您的代码可以做什么。
以 InternetSales Excel 表格的 ProductName 列为例
此列的适当 Excel 数据格式为 Text。通过指定数据格式,您告诉 Excel 该列中数据的性质,这会限制可以对数据执行的操作类型(例如函数)。
例如,对 ProductName 列调用 AVERAGE() 函数将生成以下错误
Python 中的每个对象都有一个数据类型,与 Excel 数据格式一样,Python 数据类型决定了哪些操作对对象有效。
Python 数据类型在本系列博客文章中将是一个反复出现的主题。本篇文章最重要的两种数据类型是 pandas DataFrame 和 Series。
pandas DataFrame 数据类型
类在 Python 中定义数据类型。类是 Python 代码的集合,它定义了对象具有的属性以及对象可以执行的操作。
Python 类提供了构建对象的蓝图。
pandas DataFrame 类是表示整个数据表格的数据类型。DataFrame 对象非常类似于 Microsoft Excel 中的表格。例如,DataFrame 有名称和列。
所有与 Excel 表格通常进行的操作都可以在 DataFrame 上完成。
您可以合并 DataFrame(想想 VLOOKUP/XLOOKUP)。您可以在 DataFrame 列上执行计算。您可以过滤 DataFrame。
本系列博客文章将教会您如何使用 Python 代码执行所有这些常见操作。
pandas Series 数据类型
pandas Series 类是表示单个数据列的数据类型。DataFrame 对象包含数据表格中每列数据的一个 Series 对象。
Series 类提供了许多用于处理数据列的操作(即函数)。例如,图 5 中的 Python 代码使用了 Series 类的 mean() 方法。
Series 类还表示 DataFrame 对象的行。虽然 pandas 支持处理数据行,但您编写的 pandas 代码大部分是处理列。
您的第一个 DataFrame
当您在 Excel 工作簿中执行 Python 代码时,Python 会在功能非常有限的云容器中运行。
您的 Python 代码无法访问互联网,也无法访问您计算机上的文件。从本质上讲,工作簿就是 Python 所知晓的整个宇宙。
鉴于这些限制,使用 Excel 中的 Python 时,构建 pandas DataFrame(例如,从 Excel 表格中构建)是一个非常常见的步骤,这并不令人意外。
从 Excel 表格构建 pandas DataFrame 对象非常简单。您可以使用新的 *PY()* 函数来构建包含 Python 代码的 Python 公式。
键入左括号(即“(”)后,Excel 公式编辑器将发生变化,您可以输入代码。
以下是第二行代码的工作原理。
- *xl()* 函数用于从 Excel 中提取数据并创建 pandas *DataFrame* 对象。
- 第一个参数指定数据的位置。在本例中,数据位于 *InternetSales* Excel 表格中。
- 第一个参数还指定使用所有 *InternetSales* 表格列,通过“[#ALL]”。
- 第二个参数告诉 *xl()* 函数数据中存在标题(即列名)。
- *xl()* 函数返回的 DataFrame 对象存储在名为 *internet_sales* 的变量中。您可以在以后的 Python 公式中使用此名称访问 DataFrame 对象。
在键盘上按 *<Ctrl+Enter>* 执行 Python 公式。代码可能需要几秒钟才能运行。假设您的代码没有错误,您将看到以下内容。
您可以将鼠标悬停在单元格中的卡片上,以了解 DataFrame 对象中存储的数据。
单元格卡片提供了由 Python 公式创建的 Python 对象的预览。将鼠标悬停在上面的卡片上,单击卡片将显示 *internet_sales* 的对象预览。
上面的卡片显示了 *internet_sales* 数据的前五行和后五行。卡片还显示了 DataFrame 包含 60,398 行和八列数据。
下一步是什么?
通过这篇博文中学到的技能,您可以继续学习 下一篇文章,了解如何在 DataFrame 对象的列上执行操作。
如果您有兴趣了解更多关于使用 pandas 处理数据表的信息,可以参加 数据分析 pandas 入门课程,并确保查看官方的 pandas 用户指南。
免责声明:截至本文发布之时,Microsoft Excel 中的 Python 集成处于 Beta 测试阶段。功能和函数可能会发生变化。如果您在此页面上发现错误,请随时联系我们。
作者简介
Dave Langer 创办了 Dave on Data,在那里他提供针对任何专业人士的培训,以培养数据分析技能。多年来,Dave 为数千名专业人士提供了培训。此前,Dave 在 Schedulicity、Data Science Dojo 和 Microsoft 提供了推动业务战略的见解。