如何在 Pandas DataFrame 中统计重复值?


Pandas 是一个流行的 Python 库,用于数据操作和分析。数据分析中的一项常见任务是计算 Pandas DataFrame 中重复值的个数。当多行在所有列或部分列中具有相同的值时,可能会出现重复项。

根据分析的具体要求,计算 Pandas DataFrame 中重复值的方法有多种。一种常见的方法是使用 duplicated() 方法,该方法返回一个布尔型 Series,指示每一行是否为前一行的重复项。默认情况下,该方法在检查重复项时会考虑所有列,但可以通过将列的子集传递给 subset 参数来自定义此行为。

识别出重复项后,可以使用 duplicated() 返回的布尔型 Series 的 sum() 方法对其进行计数。或者,我们也可以使用 pivot_table() 方法来计算重复项的计数。

另一种计算重复项的方法是使用 groupby() 方法按感兴趣的列对 DataFrame 进行分组,然后计算每个组出现的次数。这可以通过使用所得分组 DataFrame 的 size() 方法来实现。

让我们首先使用 pivot_table() 方法来统计 Pandas DataFrame 中可能存在的重复项。

pivot_table

pivot_table() 方法是汇总和聚合 Pandas DataFrame 中数据的强大工具。它允许我们按一列或多列对数据进行分组,并计算每个组的汇总统计数据。在计算重复项的情况下,我们可以按要检查重复项的列对数据进行分组,然后使用 count() 方法计算每个组出现的次数。

请考虑下面显示的代码,我们将在其中使用 pivot_table() 方法。

示例

import pandas as pd

# create a sample DataFrame
df = pd.DataFrame({'A': [1, 2, 2, 3, 3, 3],
               	'B': ['a', 'a', 'b', 'b', 'b', 'c'],
               	'C': ['x', 'x', 'y', 'y', 'z', 'z']})

# group the data by columns A and B, and count the number of occurrences of each group
dup_counts = df.pivot_table(index=['A', 'B'], aggfunc='size')

print(dup_counts)

说明

在此示例中,我们使用 pivot_table() 按列 A 和 B 对 DataFrame 进行分组,并使用 size() 方法计算每个组的大小。生成的 dup_counts 变量是一个 Series,显示列 A 和 B 中每个唯一值组合出现的次数。此信息可用于识别和分析 DataFrame 中的重复数据。

要运行代码,我们需要首先安装 pandas 库,然后运行下面显示的命令。

命令

pip3 install pandas
python3 main.py

上述命令的输出将是

输出

A  B
1  a	1
2  a	1
   b	1
3  b	2
   c	1
dtype: int64

duplicated()

duplicated() 方法是 Python 的 pandas 库中的一个函数,用于识别和返回 DataFrame 中重复的行。该方法通过将每一行与 DataFrame 中的所有其他行进行比较来识别重复的行,并返回一个布尔型序列,其中 True 表示该行是重复行。

现在让我们借助一个示例使用 duplicated() 方法。

请考虑下面显示的代码。

示例

import pandas as pd

# create a sample DataFrame
df = pd.DataFrame({'A': [1, 2, 2, 3, 3, 3],
               	'B': ['a', 'a', 'b', 'b', 'b', 'c'],
               	'C': ['x', 'x', 'y', 'y', 'z', 'z']})

# identify the duplicated rows based on all columns
dups = df.duplicated()

# count the number of duplicated rows
dup_count = dups.sum()

print("Number of duplicated rows: ", dup_count)

说明

在此示例中,我们使用 duplicated() 方法识别 DataFrame 中重复的行。默认情况下,该方法在检查重复项时会考虑所有列。然后,我们使用 sum() 方法计算重复行的数量,在本例中为 3。

输出

Number of duplicated rows:  3

结论

总之,计算 Pandas DataFrame 中的重复值是数据清理和分析中的重要步骤。借助 groupby()、value_counts()、pivot_table() 和 duplicated() 等多种方法,可以更轻松、更高效地识别和处理重复数据。

通过使用这些方法,可以识别和删除重复行,计算列中每个唯一值出现的次数,并按特定条件对数据进行分组,以更好地了解数据中的模式和关系。

需要注意的是,不同的方法可能更适合于不同的任务,并且始终建议检查文档并尝试不同的方法以找到最有效的解决方案。

更新于: 2023年8月3日

8K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告