Python 用于 Excel 分析师:过滤表格

Dave Langer

这是解释如何使用 Python 代码处理数据表格的系列博客文章中的第三篇。这篇文章的主题是数据分析中最常见的操作之一:过滤表格。 

最具影响力的分析来自最好的数据。使用 Python pandas 库过滤您的数据为您提供了两个重大优势: 

  • 定义过滤器的巨大能力和灵活性
  • 标准化过滤过程,使其可以由其他人快速复制

如果您不熟悉 pandas 库,请查看 本博客系列的第 1 部分,基础知识

本系列中的每一篇文章都附带一个 Microsoft Excel 工作簿,可供下载和使用,以提升您的技能。本篇文章的工作簿可供 在此处下载

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

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

过滤表格

作为一名 Excel 分析师,您执行的最常见操作之一是过滤数据表格,以获得当前分析所需的数据子集。不出所料,Microsoft Excel 为您提供了许多过滤表格的选项。

您对 Excel 过滤的了解使您轻松学习如何使用 Python 过滤数据表格。关键是将您对 Excel 过滤的了解映射到使用 pandas 库实现相同结果的方式。

本博客文章将三个最常见的 Excel 过滤场景映射到 Python 代码

  • 过滤单个列中的单个值
  • 过滤单个列中的多个值
  • 过滤多个列

单值过滤

假设您想将InternetSales 表格过滤到ProductSubcategoryName 等于“Road Bikes”的值的数据行。 

使用 Excel 表格可以通过图形用户界面 (GUI)轻松定义过滤器

图 1 - 使用单个值过滤 InternetSales 表格

在过滤器 GUI 中单击确定将过滤器应用于InternetSales 表格。虽然 Microsoft Excel GUI 对于定义和应用过滤器非常方便,但它们并不是过滤表格的唯一方法。

例如,您可以使用如下文本表示图 1 中的过滤器

  • ProductSubcategoryName = “Road Bikes”

在包括 Python 在内的编程语言中,使用类似上面的文本表示形式进行过滤很常见。

使用 Python 进行单值过滤

与 Microsoft Excel 一样,pandas 库提供了许多过滤数据表格的方法。但是,其中最有用的一种是使用 pandas DataFrame 类提供的query() 方法。 

query() 方法允许您定义文本过滤器并将它们应用于您的数据。将返回包含过滤数据的新的 DataFrame。 

query() 方法功能强大,支持许多过滤 DataFrame 的方法。本博客文章将介绍一些使用query() 的最常见方法。查看 在线文档以获取有关query() 方法的更多信息。

以下是用query() 过滤InternetSales 表格的示例。

首先,使用PY() 函数创建您的 Python 公式

图 2 - 调用 Excel PY() 函数

接下来,当您键入“(”时,单元格将指示它包含 Python 代码

图 3 - Excel Python 单元格

以下 Python 代码实现了过滤器

图 4 - 调用 query() 方法以过滤 internet_sales DataFrame

以下是如何逐步执行上述 Python 代码

  1. query() 方法在internet_sales DataFrame 对象上调用。
  2. Python 字符串用于定义过滤器。
  3. 过滤器定义为仅包含ProductSubcategoryName 列值为“Road Bikes”的 DataFrame 行,位于过滤器字符串中。
  4. 过滤后的数据将作为新的 DataFrame 返回,该 DataFrame 存储在road_bikes 变量中。

在查看图 4 中使用的过滤器时,需要注意一些事项

  • 在 Python 中,使用双等号(即==)检查值是否相等。这与 Excel 代码不同。
  • 根据 Python 编码惯例,字符串用单引号表示。图 4 中的整个过滤器字符串用单引号括起来。
  • 由于整个过滤器字符串用单引号括起来,因此您必须使用双引号来定义“Road Bikes”的字符串值。

在键盘上按<Ctrl+Enter> 将运行 Python 代码并生成输出

图 5 - 图 4 的 Python 代码输出

要查看过滤后的数据帧,请将鼠标悬停在卡片上

图 6 - 将鼠标悬停在卡片上

单击卡片将显示road_bikes 的内容

图 7 - road_bikes DataFrame 的卡片

如图 7 所示,road_bikes DataFrame 仅包含公路自行车的行数据。

多值过滤

现在假设您想将InternetSales 表格过滤到ProductSubcategoryName 等于“Road Bikes”、“Mountain Bikes”或“Touring Bikes”的值的数据行。

使用 Excel GUI,您可以定义和应用过滤器

图 8 - 使用多个值过滤 InternetSales 表格

上面的 Excel 过滤器可以使用如下文本表示

  • ProductSubcategoryName = “Mountain Bikes” or ProductSubcategoryName = “Road Bikes” or ProductSubcategoryName = “Touring Bikes”

Excel 过滤器的更简洁的文本版本是

  • ProductSubcategoryName in (“Mountain Bikes”, “Road Bikes”, “Touring Bikes”)

如您所料,Python 代码非常类似于上面的文本过滤器。

在 Python 中进行多值过滤

以下是如何使用query() 方法使用“or”定义多值过滤器的示例

图 9 - 使用“or”调用 query() 进行多值过滤

**注意**:上述 Python 代码使用多个字符串,每个字符串都用单引号括起来,以使代码能够跨多行断开。这提高了代码的可读性。

虽然您可以通过将“or”链接在一起构建多值过滤器,但通常使用“in”更容易。以下 Python 代码等效于图 9 中的代码

图 10 - 使用“in”调用 query() 进行多值过滤

执行上述任何 Python 公式都将生成名为multi_bikes 的 DataFrame。如果您单击multi_bikes 的卡片,您将看到以下内容

图 11 - multi_bikes DataFrame 的卡片

如图 11 所示,multi_bikes DataFrame 仅包含山地车、公路车和旅行车的行数据。

多列过滤

InternetSales 表格当前被过滤到ProductSubcategoryName 等于“Road Bikes”、“Mountain Bikes”或“Touring Bikes”的值的数据行。

如果您想添加第二个过滤器,其中SalesAmount 值大于 1,000 美元,Microsoft Excel GUI 使此操作变得很简单

图 12 - 在 SalesAmount 列中添加数字过滤器

此新过滤器可以用以下文本表示

  • SalesAmount > 1000

在 Excel 中同时对多列应用过滤器时,您会增加过滤器的复杂性。Excel 将自动仅返回表格中两个过滤器都为真的行。

在本例中,第一个过滤器必须为真

  • ProductSubcategoryName in (“Mountain Bikes”, “Road Bikes”, “Touring Bikes”)

第二个过滤器也必须为真

  • SalesAmount > 1000

这两个过滤条件可以使用以下文本表示形式组合起来

  • (ProductSubcategoryName 在 (“山地自行车”, “公路自行车”, “旅行自行车”) 中) 且 (SalesAmount > 1000)

在上面的文本中,每个条件都用括号括起来,以确保每个过滤条件都单独评估。

Python 中的多列过滤

以下 Python 代码使用query() 方法实现了一个过滤器,该方法为SalesAmount 列添加了一个数值条件。

图 13 – 使用“and”进行多列过滤时调用 query()

执行上面的 Python 公式会生成一个新版本的multi_bikes DataFrame。单击multi_bikes 卡将显示以下内容。

图 14 – multi_bikes DataFrame 的卡片

如图 14 所示,multi_bikes DataFrame 包含两个过滤条件的交集——就像对表格应用多个 Microsoft Excel 过滤器一样。

在这篇文章中,您学习了创建 DataFrame 过滤器的基本要素。使用“or”、“in”和“and”的组合,您可以构建复杂的过滤器,使您能够仅选择分析所需的那些数据行。

下一步是什么?

这篇博文简要介绍了过滤 pandas DataFrame。

pandas DataFrame 类提供与 Microsoft Excel 相当的功能来过滤表格。此外,使用 Python 代码在灵活性和可重复性方面具有优势。

本系列的下一篇文章 将向您介绍制作最佳数据分析的差异化因素之一:清理和整理您的数据。Python 在这方面为您提供了两个重要优势

  • 高级分析(如机器学习)所需的数据整理技术。
  • 标准化您的整理过程,以便其他人可以快速复制它。

如果您想了解有关使用 pandas 处理数据表的更多信息,请参加数据分析 pandas 入门课程,并查看官方的pandas 用户指南

免责声明:截至本文发表,Microsoft Excel 中的 Python 集成处于 Beta 测试阶段。功能和功能可能会发生变化。如果您在此页面上发现错误,请随时联系我们。

生物

Dave Langer 成立了 Dave on Data,在该公司他提供针对任何专业人士开发数据分析技能的培训。多年来,戴夫培训了数千名专业人士。此前,Dave 在 Schedulicity、Data Science Dojo 和 Microsoft 提供了推动业务战略的见解。

与专家交谈

与我们的专家交谈,为您的 AI 旅程寻找解决方案。

与专家交谈