Bird
Raised Fist0
Pandasdata~3 mins

Why Duplicates on specific columns in Pandas? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could find hidden repeated data in seconds instead of hours?

The Scenario

Imagine you have a big list of customer orders in a spreadsheet. You want to find if any customers ordered the same product more than once. Doing this by scanning each row and comparing manually is like searching for a needle in a haystack.

The Problem

Manually checking each order for duplicates is slow and tiring. It's easy to miss duplicates or make mistakes, especially when the list is huge. This wastes time and can cause wrong decisions.

The Solution

Using pandas to find duplicates on specific columns lets you quickly spot repeated entries based on just the columns you care about, like customer ID and product. It's fast, accurate, and saves you from tedious work.

Before vs After
✗ Before
for i in range(len(data)):
    for j in range(i+1, len(data)):
        if data[i]['customer'] == data[j]['customer'] and data[i]['product'] == data[j]['product']:
            print('Duplicate found')
✓ After
duplicates = data.duplicated(subset=['customer', 'product'], keep=False)
print(data[duplicates])
What It Enables

You can instantly find repeated records based on important columns, making data cleaning and analysis much easier and reliable.

Real Life Example

A store manager wants to know if any customers placed the same order twice by mistake. Using this method, they quickly identify those cases and fix them.

Key Takeaways

Manually finding duplicates is slow and error-prone.

Checking duplicates on specific columns targets exactly what matters.

pandas makes this fast, simple, and accurate.

Practice

(1/5)
1. What does the subset parameter do in the duplicated() method in pandas?
easy
A. It specifies which columns to check for duplicates.
B. It removes duplicates from the DataFrame.
C. It sorts the DataFrame before checking duplicates.
D. It changes the data type of columns before checking duplicates.

Solution

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

    The duplicated() method identifies duplicate rows in a DataFrame.
  2. Step 2: Role of subset parameter

    The subset parameter limits the duplicate check to specific columns instead of all columns.
  3. Final Answer:

    It specifies which columns to check for duplicates. -> Option A
  4. Quick Check:

    subset = columns to check duplicates [OK]
Hint: Use subset to focus duplicate check on chosen columns [OK]
Common Mistakes:
  • Thinking subset removes duplicates
  • Confusing subset with sorting
  • Assuming subset changes data types
2. Which of the following is the correct syntax to find duplicates based on columns 'A' and 'B' in a pandas DataFrame df?
easy
A. df.duplicated(subset=['A', 'B'])
B. df.duplicates(columns=['A', 'B'])
C. df.duplicated(columns=['A', 'B'])
D. df.find_duplicates(['A', 'B'])

Solution

  1. Step 1: Recall pandas method for duplicates

    The correct method is duplicated() to find duplicate rows.
  2. Step 2: Correct use of subset parameter

    The subset parameter takes a list of column names to check duplicates on.
  3. Final Answer:

    df.duplicated(subset=['A', 'B']) -> Option A
  4. Quick Check:

    Correct method and subset syntax [OK]
Hint: Use duplicated(subset=[...]) to specify columns [OK]
Common Mistakes:
  • Using non-existent methods like duplicates()
  • Passing columns instead of subset
  • Wrong method names like find_duplicates()
3. Given the DataFrame:
import pandas as pd
data = {'A': [1, 2, 1, 3], 'B': [4, 5, 4, 6], 'C': [7, 8, 9, 10]}
df = pd.DataFrame(data)
print(df.duplicated(subset=['A', 'B']))

What is the output?
medium
A. [False, True, False, False]
B. [True, False, True, False]
C. [False, False, True, False]
D. [False, False, False, True]

Solution

  1. Step 1: Understand the DataFrame and subset

    The DataFrame has rows with columns A and B: (1,4), (2,5), (1,4), (3,6).
  2. Step 2: Identify duplicates on columns 'A' and 'B'

    The third row (index 2) duplicates the first row (index 0) on columns A and B.
  3. Final Answer:

    [False, False, True, False] -> Option C
  4. Quick Check:

    Only third row is duplicate on A and B [OK]
Hint: Check repeated (A,B) pairs for True in duplicated() output [OK]
Common Mistakes:
  • Assuming duplicates on all columns
  • Marking first occurrence as duplicate
  • Confusing index positions
4. You run this code:
df.duplicated(subset=['A', 'B'], keep='last')

but get unexpected results. What is a common mistake causing this?
medium
A. Forgetting to pass a list to subset causes an error.
B. Using keep='last' marks the last occurrence as False, others as True.
C. Using keep='last' marks the first duplicates as True, not the last.
D. The duplicated() method does not accept keep parameter.

Solution

  1. Step 1: Understand keep parameter behavior

    keep='last' marks all duplicates except the last occurrence as True.
  2. Step 2: Identify common confusion

    Many expect it to mark the last duplicate as True, but it actually keeps the last as False (not duplicate).
  3. Final Answer:

    Using keep='last' marks the last occurrence as False, others as True. -> Option B
  4. Quick Check:

    keep='last' keeps last duplicate False [OK]
Hint: Remember keep='last' keeps last duplicate False, others True [OK]
Common Mistakes:
  • Thinking keep='last' marks last duplicate True
  • Passing subset as string instead of list
  • Believing duplicated() lacks keep parameter
5. You have a DataFrame df with columns 'Name', 'Age', 'City'. You want to remove rows where 'Name' and 'City' are duplicates but keep the first occurrence. Which code correctly does this?
hard
A. df[~df.duplicated(subset=['Name', 'City'], keep='first')]
B. df = df.duplicated(subset=['Name', 'City'], keep='first')
C. df = df.drop_duplicates(columns=['Name', 'City'], keep='last')
D. df = df.drop_duplicates(subset=['Name', 'City'], keep='first')

Solution

  1. Step 1: Identify method to remove duplicates

    Use drop_duplicates() to remove duplicate rows.
  2. Step 2: Use subset and keep parameters correctly

    Pass subset=['Name', 'City'] and keep='first' to keep first occurrence and remove others.
  3. Step 3: Check options

    df = df.drop_duplicates(subset=['Name', 'City'], keep='first') uses correct method and parameters. df[~df.duplicated(subset=['Name', 'City'], keep='first')] uses duplicated() with negation but does not assign back to df. df = df.drop_duplicates(columns=['Name', 'City'], keep='last') uses wrong parameter name. df = df.duplicated(subset=['Name', 'City'], keep='first') returns boolean Series, not DataFrame.
  4. Final Answer:

    df = df.drop_duplicates(subset=['Name', 'City'], keep='first') -> Option D
  5. Quick Check:

    drop_duplicates with subset and keep='first' removes duplicates [OK]
Hint: Use drop_duplicates(subset=[...], keep='first') to remove duplicates [OK]
Common Mistakes:
  • Using duplicated() instead of drop_duplicates() to remove rows
  • Passing columns instead of subset
  • Not assigning result back to df
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