Python中获取Pandas DataFrame列的唯一值

2025年1月5日 | 阅读 4 分钟

引言

Python 中最强大的数据处理库之一是 Pandas。此外,它还提供了一系列结构化数据函数。事实上,特别是对于 DataFrame,人们通常只需要考虑某个列的唯一值。在本章中,我们将探讨一些获取所有所需元素的方法。

理解 Pandas DataFrame

因此,首先,我们将稍微跳过并快速回顾一些关于 Pandas DataFrame 的基本事实。也就是说,在深入探讨如何获取唯一值的技术细节之前。DataFrame 是一个二维带标签的数据表,包含行和列。它专为数据工作而定制,建立在 NumPy 的基础上。

输出

Name  Age           City
0    Alice   25       New York
1      Bob   30  San Francisco
2    Alice   25       New York
3  Charlie   35    Los Angeles
4      Bob   30  San Francisco

方法 1:使用 'unique()' 方法

Pandas 的 **unique()** 方法是获取列唯一元素的有效方法。它返回一个只包含唯一值的数组,按照它们在 DataFrame 中出现的顺序。

输出

Unique Names: ['Alice' 'Bob' 'Charlie']

在此代码片段中,Pandas 的 'unique()' 用于获取 df['Name'] 列中的唯一值。unique_names 是按照出现顺序显示的原始名称的数组。此打印语句显示了这些特殊名称。

方法 2:使用 'value_counts()' 方法

除了提供唯一值之外,**'value_counts()'** 方法还会计算它们的出现次数。如果您想知道给定列中的每个唯一元素出现了多少次,这会非常有用。

输出

Name Counts:
 Bob        2
Alice      2
Charlie    1
Name: Name, dtype: int64

在这里,'value_counts()' 方法用于从 Name 列中提取唯一名称及其计数。name_counts 的结果是一个 Pandas Series,提供所有唯一名称的频率分布。

方法 3:使用 'drop_duplicates()' 方法

获取唯一值的第二种方法是 'drop_duplicates()' 方法。与 unique() 不同,此方法返回一个新的不包含重复项的 DataFrame。

输出

DataFrame with Unique Names:
     Name  Age           City
0  Alice   25       New York
1    Bob   30  San Francisco
3 Charlie   35    Los Angeles

使用 drop_duplicates() 基于 'Name' 列删除重复行 (unique_df)。结果是,我们的 DataFrame 只保留了每个唯一名称的第一个实例,并且我们已经设置了清晰的内容。

方法 4:应用 Set

根据定义,Python 的 set 只存储唯一元素。如果我们将一个列转换为 set,那么找到所有不同的值就很简单。

输出

Unique Cities: {'San Francisco', 'Los Angeles', 'New York'}

这段简短的代码将 'City' 列转换为一个 set (unique_cities)。由于 set 根据定义只包含不重复的元素,因此此过程可以找到与 DataFrame 不同的城市名称并打印它们。

方法 5:使用 'nunique()' 方法

nunique() 方法返回列中唯一元素的数量。当您想要的是唯一值的计数但又不想一一列举它们时,它尤其有用。

输出

Number of Unique Names: 3

'nunique()' 计算该列中唯一名称的数量,返回一个单一的数值 (num_unique_names)。打印语句显示了唯一名称的数量。

方法 6:自定义函数获取唯一值

在其他情况下,您可能需要引入自己的自定义逻辑来确定唯一值。这可能还涉及到使用一个函数,该函数根据特定标准检查唯一性。

输出

Unique Names based on Custom Logic: []

定义了一个自定义函数 ('custom_unique_check'),用于根据特定标准检查唯一性,例如名称长度是否为偶数。然后使用 'apply()' 方法将此函数应用于 'Name',结果 DataFrame 包含所有满足我们自定义条件的.* 的值。然后以唯一的形式打印满足条件的名称。

结论

在这个详尽的指南中,我们回顾了如何在 Pandas DataFrame 中提取列中的新值。无论您的精确度要求决定使用内置方法,如 'unique()'、'value_counts()' 和/或 drop_duplicates(),还是您选择编写自定义函数,Pandas 都提供了各种选项来满足各种需求。

掌握这些技能对于数据清理、预处理和分析工作至关重要,这些工作使您能够理解数据集的特殊之处。当您继续使用 Pandas DataFrame 工作时,学习这些方法将使您更容易分解和提取数据信息。