面向 Excel 分析师的 Python:基础知识

Dave Langer

作为 Microsoft Excel 分析师,您知道数据表是任何分析的原始材料。原始材料是表格工作表数据、Excel 表格还是数据透视表都无关紧要。分析中的一切都始于表格。

同样,您的 Python 之旅也始于数据表。这是旨在快速教您如何使用 pandas Python 库处理数据表的系列博文中的第一篇。

有关 Python 库的更多信息,请查看此短视频:Excel 中的 Python 程序包是什么?

如果您不熟悉 pandas 或 Python,请不用担心。一切都会得到解释。

本系列中的所有博文都将利用Microsoft 的 AdventureWorks 示例数据库中的数据。

每篇文章还将附带一个 Microsoft Excel 工作簿,供您下载并用于培养技能。本文的工作簿可在此处下载

为方便起见,以下是本系列中所有博文的链接

注意:要重现本文中的示例,请安装 Excel 中的 Python 试用版。如果您喜欢本博客系列,请查看我的 Anaconda 认证课程,使用 Excel 中的 Python 进行数据分析

你也是程序员!

虽然大多数 Excel 分析师不这样认为,但编写代码是使用 Microsoft Excel 分析数据的常见方面。

您在使用 Excel 分析数据时经常编写公式。有时您的公式可能很简单(例如,计算列的平均值)。有时您的公式可能很复杂(例如,嵌套的 IF() 函数调用)。

无论公式的复杂程度如何,它们都是代码。这种编码知识使学习 Python 比您想象的更容易。

Python 中一切皆对象

Python 是一种面向对象编程 (OOP) 语言。这意味着非常简单。当您编写 Python 代码时,您的代码与 Python 对象交互。Python 中一切都被视为对象。

这是好消息。

作为 Excel 分析师,您已经熟悉使用对象编写代码。是否曾经使用表格编写 Excel 公式?那么您已经编写了使用对象的代码!

Excel 表格是对象

这篇博文将使用以下 Excel 表格作为运行示例

图 1 – InternetSales 表格

Excel 表格是您在编写公式时使用的“事物”(即对象)。例如,Excel 表格具有名称(例如,InternetSales)和列(例如,SalesAmount),这些名称和列在您的公式中使用。

假设您想要计算 InternetSales 表格的 SalesAmount 列的平均值。您可以轻松地编写如下代码

图 2 – 在公式中使用 Excel 表格

在这个小段公式代码中,发生了很多事情。从概念上讲,这是当您在键盘上按下 <Enter> 并且公式执行时发生的事情

  1. Excel 找到 InternetSales 表格(一个对象)。
  2. 然后 Excel 找到 SalesAmount 列(另一个对象)。
  3. 来自 SalesAmount 列的数据被传递给 AVERAGE() 函数。
  4. AVERAGE() 函数验证数据是否为数值。
  5. AVERAGE() 函数执行计算并返回结果。
图 3 – 公式结果

以上只是一个您编写 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。

让 pandas 发挥作用

与 Python 中的所有内容一样,pandas 数据表也是对象。Python 对象具有属性(例如,名称)并且可以执行操作(例如,计算平均值)。

理解这些概念的最简单方法是将 Excel 代码与 Python 代码进行比较。Excel 公式是由对象、属性和函数(即操作)组成的代码。

您可以将这些概念映射到之前的公式代码

图 4 – 将 Excel 代码分解为对象、属性和函数

上面的公式代码将操作(即 AVERAGE() 函数)应用于 InternetSales 对象的 SalesAmount 属性。

以下 pandas Python 代码实现了相同的结果

图 5 – 图 4 的 Excel 公式的等效 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 列为例

图 6 – InternetSales 表格的 ProductName 列

此列的适当 Excel 数据格式是文本。通过指定数据格式,您可以告诉 Excel 列中数据的性质,这限制了可以对数据执行的操作类型(例如,函数)。

例如,在 ProductName 列上调用 AVERAGE() 函数将生成以下错误

图 7 – 在文本列上调用 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 代码无法访问 Internet,也无法访问您计算机上的文件。基本上,对于 Python 而言,工作簿就是整个宇宙。

鉴于这些限制,从 Excel 表格构造 pandas DataFrame(例如)是使用 Excel 中的 Python 时非常常见的首要步骤,这并不奇怪。

从 Excel 表格构造 pandas DataFrame 对象非常简单。您可以使用新的 PY() 函数来构造包含 Python 代码的 Python 公式

图 8 – 使用 PY() 函数创建 Python 公式

一旦您键入左括号(即“(“),Excel 公式编辑器将更改,您可以输入您的代码

图 9 – 从 Excel 表格构造 pandas DataFrame

以下是第二行代码的工作方式

  1. xl() 函数用于从 Excel 提取数据并创建 pandas DataFrame 对象。
  2. 第一个参数指定数据的位置。在本例中,数据位于 InternetSales Excel 表格中。
  3. 第一个参数还指定通过“[#ALL]”使用所有 InternetSales 表格列。
  4. 第二个参数告诉 xl() 函数数据中存在标题(即列名)。
  5. xl() 函数返回的 DataFrame 对象存储在名为 internet_sales 的变量中。您可以使用此名称在以后的 Python 公式中访问 DataFrame 对象。

在键盘上按 <Ctrl+Enter> 执行 Python 公式。代码可能需要几秒钟才能运行。假设您的代码没有错误,这是您将看到的

图 10 – 从 Excel 表格成功加载 pandas DataFrame

您可以通过将鼠标悬停在单元格中的卡片上来大致了解 DataFrame 对象中存储的数据

图 11 – 将鼠标悬停在 Python 公式单元格的卡片上

在鼠标悬停在上面的卡片上时,单击卡片将显示 internet_sales 的对象预览

图 12 – 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 提供了推动业务战略的见解。

咨询专家

与我们的专家之一交谈,为您的 AI 之旅找到解决方案。

咨询专家