Bird
Raised Fist0
Pandasdata~5 mins

Counting duplicates in Pandas - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Counting duplicates
O(n)
Understanding Time Complexity

We want to know how the time to count duplicates grows as the data gets bigger.

How does pandas find and count repeated rows or values efficiently?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 2, 3, 3, 3],
    'B': ['x', 'y', 'y', 'z', 'z', 'z']
})
duplicates_count = df.duplicated().sum()

This code creates a small table and counts how many rows are duplicates.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Checking each row against previous rows to find duplicates.
  • How many times: Once for each row in the data.
How Execution Grows With Input

As the number of rows grows, pandas checks each row once to see if it appeared before.

Input Size (n)Approx. Operations
10About 10 checks
100About 100 checks
1000About 1000 checks

Pattern observation: The work grows directly with the number of rows.

Final Time Complexity

Time Complexity: O(n)

This means the time to count duplicates grows in a straight line as the data size grows.

Common Mistake

[X] Wrong: "Counting duplicates takes much longer than just looking at each row once."

[OK] Correct: pandas uses efficient methods to track seen rows, so it only needs to check each row once, not repeatedly compare all pairs.

Interview Connect

Understanding how counting duplicates scales helps you explain data cleaning steps clearly and shows you know how pandas handles data efficiently.

Self-Check

"What if we counted duplicates based on only one column instead of all columns? How would the time complexity change?"

Practice

(1/5)
1.

What does the duplicated() function in pandas do?

easy
A. It counts how many times each value appears in a column.
B. It removes all duplicate rows from the DataFrame.
C. It marks duplicate rows as True and unique rows as False.
D. It sorts the DataFrame by duplicate values.

Solution

  1. Step 1: Understand the purpose of duplicated()

    The duplicated() function checks each row and marks it True if it is a duplicate of a previous row, otherwise False.
  2. Step 2: Compare with other functions

    Unlike drop_duplicates() which removes duplicates, duplicated() only marks them. value_counts() counts values, not duplicates.
  3. Final Answer:

    It marks duplicate rows as True and unique rows as False. -> Option C
  4. Quick Check:

    duplicated() = True/False mask [OK]
Hint: duplicated() flags duplicates, does not remove them [OK]
Common Mistakes:
  • Thinking duplicated() removes duplicates
  • Confusing duplicated() with value_counts()
  • Assuming duplicated() sorts data
2.

Which of the following is the correct syntax to count duplicate rows in a pandas DataFrame df?

?
easy
A. df.duplicated().sum()
B. df.duplicate().count()
C. df.value_counts().duplicated()
D. df.count_duplicates()

Solution

  1. Step 1: Identify correct function names

    The correct function to find duplicates is duplicated(). There is no duplicate() or count_duplicates() in pandas.
  2. Step 2: Count duplicates using sum()

    duplicated() returns a boolean Series. Using sum() counts how many True values (duplicates) exist.
  3. Final Answer:

    df.duplicated().sum() -> Option A
  4. Quick Check:

    duplicated() + sum() = count duplicates [OK]
Hint: Use duplicated() then sum() to count duplicates [OK]
Common Mistakes:
  • Using wrong function names like duplicate()
  • Trying to count duplicates with value_counts() directly
  • Using count() instead of sum() on boolean Series
3.

Given the DataFrame df below, what is the output of df.duplicated().sum()?

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 2, 3, 1], 'B': ['x', 'y', 'y', 'z', 'x']})
print(df.duplicated().sum())
medium
A. 3
B. 2
C. 1
D. 0

Solution

  1. Step 1: Identify duplicate rows

    Rows 0 and 4 are identical (A=1, B='x'), and rows 1 and 2 are identical (A=2, B='y'). The first occurrence is not counted as duplicate.
  2. Step 2: Count duplicates marked True

    Row 2 and row 4 are duplicates (second occurrences), so duplicated() marks these two rows True. Summing gives 2.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    Two duplicate rows found = 2 [OK]
Hint: duplicated() counts second+ occurrences only [OK]
Common Mistakes:
  • Counting all duplicates including first occurrence
  • Confusing duplicated() with value_counts()
  • Ignoring that duplicated() marks only later duplicates
4.

What is wrong with this code to count duplicates in DataFrame df?

duplicates = df.duplicated.count()
medium
A. duplicated is a method and needs parentheses before count()
B. count() cannot be used on duplicated() output
C. duplicated() does not exist in pandas
D. sum() should be used instead of count()

Solution

  1. Step 1: Check method call syntax

    duplicated is a method and must be called with parentheses: duplicated().
  2. Step 2: Understand method chaining

    Without parentheses, df.duplicated.count() tries to access count attribute of the method itself, causing error. Correct is df.duplicated().count(), but this counts all rows, not duplicates.
  3. Final Answer:

    duplicated is a method and needs parentheses before count() -> Option A
  4. Quick Check:

    Call duplicated() with () before count() [OK]
Hint: Always use parentheses to call duplicated() method [OK]
Common Mistakes:
  • Forgetting parentheses on duplicated()
  • Using count() instead of sum() to count duplicates
  • Assuming duplicated is a property, not a method
5.

You have a DataFrame df with a column 'Category'. You want to find which categories appear more than once and how many times. Which code snippet correctly does this?

?
hard
A. df['Category'].count_duplicates()
B. df.duplicated('Category').sum()
C. df['Category'].duplicated().count()
D. df['Category'].value_counts()[df['Category'].value_counts() > 1]

Solution

  1. Step 1: Use value_counts() to count category occurrences

    value_counts() counts how many times each category appears.
  2. Step 2: Filter categories with counts greater than 1

    Using boolean indexing [value_counts() > 1] selects only categories appearing more than once.
  3. Final Answer:

    df['Category'].value_counts()[df['Category'].value_counts() > 1] -> Option D
  4. Quick Check:

    value_counts() + filter > 1 = repeated categories [OK]
Hint: Use value_counts() then filter counts > 1 [OK]
Common Mistakes:
  • Using duplicated() on a column returns booleans, not counts
  • Trying to call non-existent count_duplicates()
  • Using count() on duplicated() output incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard