计算Pandas DataFrame中的值

2025年3月7日 | 阅读 7 分钟

引言

Python 的 Pandas DataFrame 是处理和检查表格记录的一种强大而灵活的数据结构。它是 Pandas 库的一个组成部分,该库广泛用于数据分析和记录操作。类似于电子表格或 SQL 表,DataFrame 被概念化为一个包含行和列的表,可以存储各种数据类型(例如,整数、浮点数、文本)。

NumPy 是 DataFrame 构建的基础,它支持对大型数据集进行强大的操作。由于 DataFrame 提供索引,定义行和列的名称或位置可以轻松访问和修改数据。DataFrame 通常用于从数据库、Excel 文档、CSV 文件甚至 JSON 系统等来源导入数据。

任何 DataFrame 都有两个主要组成部分:

  • 索引:用于标识行的标签。
  • 列:用于标识包含实际数据值的列的标签。

用户可以使用 Pandas 轻松分析数据并执行大量的操作,包括过滤、分组、合并、重塑和组合。由于其灵活性,DataFrame 在探索性数据分析、数据清理和预测模型预处理等任务中至关重要。

DataFrame 值计数概览

在 Pandas DataFrame 中,计数是数据分析和汇总的基本技术。为了了解数据的分布和属性,它包括确定特定值或条件在数据集中出现的频率。为了有效地执行这些计数任务,Pandas 提供了一系列内置函数和策略。

  • 唯一值计数
    计算单个列中某个值出现次数的最流行函数之一是 `value_counts()`。它返回每个唯一值及其出现次数的概述。这对于分类变量尤其有用,因为了解每个类别出现的频率至关重要。
  • 总计数
    您还可以使用 `.size` 属性或 `len()` 来查找 DataFrame 或列中的总值数。使用这些工具可以轻松确定数据集的总大小或行数。
  • 计算缺失值
    在现实世界的数据中,查找缺失值是很常见的。用户可以通过计算每列中缺失(NaN)条目的数量来发现不完整的数据,使用 `isna()` 或 `isnull()` 方法。
  • 非缺失值计数
    类似地,为了确定可用数据的数量,可以使用 `notna()` 或 `notnull()` 来计数非缺失值。
  • 分组计数
    `groupby()` 函数可用于分段分析,它允许根据不同的组对数据进行计数,以处理更复杂的情况。

Pandas 中计数值的各种方法

  • 如何使用 `value_counts()`
    value_counts() 函数用于计算列中唯一值的数量。它返回一个 Pandas Series,其中索引代表唯一值,值代表它们相应的计数。

用例:如果您想查看每个类别在特定数据中出现的频率,这将非常有用。它也常用于快速总结任何列的分布。

语法

  • 使用 `count()` 计算非缺失值
    count() 函数确定 DataFrame 的每行或每列中存在的非缺失值的数量。默认情况下,它作用于列,但您可以使用 `axis` 参数将其应用于行。

用例:这在确定数据集中有效条目(非 NaN)的数量时很有用,尤其是在处理可能包含缺失值的数据时。

语法

  • 缺失值计数(`sum(isna()` 或 `isnull())`
    描述:要查找缺失值(NaN),Pandas 提供了 `isna()`(或 `isnull()`,它们是相似的)。要找出每列中有多少个值是缺失的,您可以将此函数与 `sum()` 结合使用。
    用例:此方法对于数据清理至关重要,因为它有助于您确定哪些行或列包含缺失数据,以便您可以根据需要填充或删除它们。

语法

  • DataFrame 的总值计数(`.size`)
    DataFrame 的 `.size` 属性返回 DataFrame 中的对象总数(即,总行数乘以列数)。它包括缺失值和非缺失值。
    用例:当您需要知道 DataFrame 中有多少个单元格时,无论单元格是包含实际数据还是缺失值,此方法都很有用。

语法

  • 行计数(`len()`)
    当 `len()` 函数应用于 DataFrame 时,它返回 DataFrame 中的总行数。这类似于确定索引的长度。
    用例:每当您需要快速确定 DataFrame 中的行数时,请使用 `len()`。在执行行级操作(如过滤)之前,经常使用它。

语法

  • 按条件值计数
    描述:通过构建一个整数掩码并使用 `sum()`,您可以计算满足特定标准的项。由于在布尔逻辑中 True 被视为 1,因此可以通过对布尔 Series 求和来找到 True 值的计数。
    用例:计算大于或小于阈值的条目,或计算特定类别的数量,这些都可能有助于确定列中满足不同标准的条目数量。

语法

  • 基于组的计数(`count()` 或 `groupby()` 加上 `size()`)
    使用 `groupby()` 函数,一旦数据按一个或多个列分组,您就可以对每个数据组应用 `size()` 或 `count()`。`count()` 计算每个组中的非空值,而 `size()` 计算每个组中的总出现次数。
    用例:例如按地区或产品类型计算销售额,这种分段数据分析非常适合计算不同组内的出现次数。

语法

  • 重复计数(`sum(duplicated())`)
    描述:`duplicated()` 函数返回一个布尔 Series,其中 True 表示重复项,用于查找 DataFrame 中重复的行。要找到重复行的总数,请对该 Series 求和。
    用例:在进行分析或机器学习之前,识别和处理数据中的重复条目至关重要,这对于确保数据质量非常重要。

语法

  • 使用 `apply()` 进行自定义计数
    您还可以使用 `apply()` 方法将自定义函数应用于 DataFrame 的所有行或列。当内置计数方法不足以满足您的需求时,这可能很有用。可以定义基于复杂标准的自定义逻辑。
    用例:当您需要计数满足不同约束的行或列中的值,或者当您需要执行更复杂的计数时,这会派上用场。

语法

  • 使用 `crosstab()` 进行列联计数
    crosstab() 函数用于生成多变量的交叉制表,这指的是多个列中特定值组合的频率。使用此技术,将生成一个矩阵,其中列和行索引代表类别,单元格中显示共现计数。
    用例:非常适合检查多个分类变量之间的关系,例如每个企业提供的产品数量,或特定特征出现的频率。

语法

Pandas DataFrame 中计数值的示例

示例 DataFrame

输出

Count Values in Pandas DataFrame

总结

在 Pandas 中计数是数据分析的核心任务之一,它提供了有关数据分布、质量和结构的信息。Pandas 提供了许多有用的工具,包括 `value_counts()`、`count()`、`groupby()` 以及使用 `apply()` 或条件进行自定义计数的方法,这些方法对于分析分类变量、查找缺失值和进行基于组的分析非常有用。通过熟练掌握这些技术,您可以快速总结数据、发现异常并准备数据以进行更高级的分析或预测建模任务。

Pandas 中计数的最佳方法

  • 选择合适的计数技术
    分别使用 `isna()`、`count()` 和 `value_counts()` 来计数缺失值、非缺失值和唯一值。对于分段计数,使用 `groupby()` 和 `sum()` 来计数缺失数据。为您的用例选择能够最大化清晰度和性能的方法。
  • 正确管理缺失数据
    在计数之前评估和处理缺失数据。使用 `isna()` 和 `notna()` 来确定缺失值和非缺失值的数量。根据您研究的要求,考虑填充或删除缺失数据。
  • 使用布尔掩码应用条件计数
    在按标准计数时创建布尔掩码并对它们求和。这种为自定义排序和计数满足特定标准的记录的方法既易于使用又相当有效。
  • 使用基于组的计数进行聚合分析
    当按组或类别(例如客户细分或地理区域)分析数据时,`groupby()` 与 `count()` 或 `size()` 的组合至关重要。它允许您将分析细分为多个维度。
  • 避免冗余
    计数时,使用最简单有效的方法。对于简单任务,使用 `len()` 计算行数可能比对整个 DataFrame 使用 `count()` 更好。
  • 提高大型数据集的效率
    对于大型数据集,应考虑性能。如果可能,使用 `crosstab()` 等优化技术或 `value_counts()` 等高效方法,以避免与分组和自定义函数相关的计算成本。