如何在 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告