Bird
Raised Fist0
Data Analysis Pythondata~5 mins

Removing duplicates (drop_duplicates) in Data Analysis Python

Choose your learning style10 modes available
Introduction

Sometimes data has repeated rows that we don't need. Removing duplicates helps us clean data and get accurate results.

You have a list of customer orders and want to count each customer only once.
You collected survey responses but some people submitted multiple times.
You merged two datasets and want to remove repeated rows.
You want to prepare data for analysis without repeated entries.
Syntax
Data Analysis Python
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

subset lets you choose columns to check for duplicates. If None, all columns are checked.

keep decides which duplicate to keep: 'first' keeps the first, 'last' keeps the last, and False drops all duplicates.

Examples
Remove duplicate rows considering all columns, keep the first occurrence.
Data Analysis Python
df.drop_duplicates()
Remove duplicates based only on 'Name' and 'Age' columns.
Data Analysis Python
df.drop_duplicates(subset=['Name', 'Age'])
Keep the last occurrence of each duplicate row.
Data Analysis Python
df.drop_duplicates(keep='last')
Remove duplicates and change the original DataFrame directly.
Data Analysis Python
df.drop_duplicates(inplace=True)
Sample Program

This code creates a small table with repeated rows. Then it removes duplicates and shows the cleaned table.

Data Analysis Python
import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Alice', 'David', 'Bob'],
        'Age': [25, 30, 25, 40, 30],
        'City': ['NY', 'LA', 'NY', 'Chicago', 'LA']}

df = pd.DataFrame(data)

print('Original DataFrame:')
print(df)

# Remove duplicate rows
unique_df = df.drop_duplicates()

print('\nDataFrame after removing duplicates:')
print(unique_df)
OutputSuccess
Important Notes

By default, drop_duplicates() returns a new DataFrame and does not change the original.

Use inplace=True if you want to modify the original DataFrame directly.

Checking duplicates on specific columns helps when only some columns matter for uniqueness.

Summary

Use drop_duplicates() to remove repeated rows from data.

You can choose which columns to check and which duplicates to keep.

Removing duplicates helps make data clean and ready for analysis.

Practice

(1/5)
1. What does the drop_duplicates() function do in a pandas DataFrame?
easy
A. Fills missing values with zeros
B. Removes repeated rows based on all columns by default
C. Sorts the DataFrame rows in ascending order
D. Changes the data type of columns

Solution

  1. Step 1: Understand the function purpose

    drop_duplicates() is used to remove repeated rows in a DataFrame.
  2. Step 2: Default behavior

    By default, it checks all columns to find duplicates and keeps the first occurrence.
  3. Final Answer:

    Removes repeated rows based on all columns by default -> Option B
  4. Quick Check:

    drop_duplicates() removes repeated rows [OK]
Hint: Remember: drop_duplicates removes repeated rows [OK]
Common Mistakes:
  • Thinking it sorts data
  • Confusing with fillna()
  • Assuming it changes data types
2. Which of the following is the correct syntax to remove duplicate rows from a DataFrame df?
easy
A. df.drop_duplicates[]
B. df.remove_duplicates()
C. df.drop_duplicates()
D. df.drop_duplicates{}

Solution

  1. Step 1: Identify correct method call

    The method to remove duplicates is drop_duplicates(), called with parentheses.
  2. Step 2: Check syntax correctness

    Only df.drop_duplicates() is valid syntax; brackets or braces are incorrect.
  3. Final Answer:

    df.drop_duplicates() -> Option C
  4. Quick Check:

    Use parentheses to call methods [OK]
Hint: Use parentheses () to call drop_duplicates method [OK]
Common Mistakes:
  • Using square brackets instead of parentheses
  • Using a non-existent method name
  • Using curly braces instead of parentheses
3. Given the DataFrame df below, what will df.drop_duplicates(subset=['Name']) return?
import pandas as pd
data = {'Name': ['Anna', 'Bob', 'Anna', 'Cody'], 'Age': [25, 30, 25, 22]}
df = pd.DataFrame(data)
medium
A. [{'Name': 'Anna', 'Age': 25}, {'Name': 'Bob', 'Age': 30}, {'Name': 'Cody', 'Age': 22}]
B. [{'Name': 'Anna', 'Age': 25}, {'Name': 'Anna', 'Age': 25}, {'Name': 'Bob', 'Age': 30}, {'Name': 'Cody', 'Age': 22}]
C. [{'Name': 'Bob', 'Age': 30}, {'Name': 'Cody', 'Age': 22}]
D. [{'Name': 'Anna', 'Age': 25}, {'Name': 'Bob', 'Age': 30}]

Solution

  1. Step 1: Understand subset parameter

    Using subset=['Name'] means duplicates are checked only on the 'Name' column.
  2. Step 2: Identify duplicates by 'Name'

    'Anna' appears twice; only the first occurrence is kept, others dropped.
  3. Final Answer:

    [{'Name': 'Anna', 'Age': 25}, {'Name': 'Bob', 'Age': 30}, {'Name': 'Cody', 'Age': 22}] -> Option A
  4. Quick Check:

    Duplicates dropped by 'Name' column [OK]
Hint: Use subset to check duplicates on specific columns [OK]
Common Mistakes:
  • Not using subset and dropping all duplicates
  • Keeping all duplicates instead of first
  • Confusing which rows are dropped
4. What is wrong with this code snippet to remove duplicates from DataFrame df?
df.drop_duplicates(inplace=True)

After running it, duplicates still appear in df. Why?
medium
A. The DataFrame has no duplicates to remove
B. drop_duplicates() does not modify the original DataFrame even with inplace=True
C. The DataFrame was not reassigned and inplace=True is ignored
D. The inplace parameter is misspelled

Solution

  1. Step 1: Check inplace parameter usage

    inplace=True modifies the original DataFrame, so no reassignment needed.
  2. Step 2: Consider DataFrame content

    If duplicates still appear, likely the DataFrame had no duplicates to remove.
  3. Final Answer:

    The DataFrame has no duplicates to remove -> Option A
  4. Quick Check:

    inplace=True modifies original; no duplicates means no change [OK]
Hint: Check if DataFrame actually has duplicates before drop_duplicates [OK]
Common Mistakes:
  • Assuming inplace=True does nothing
  • Thinking drop_duplicates always changes data
  • Not verifying if duplicates exist
5. You have a DataFrame df with columns ['ID', 'Name', 'Score']. Some rows have duplicate ID values but different Score. How do you keep only the row with the highest Score for each ID?
hard
A. Use df.drop_duplicates(subset=['Score'])
B. Use df.drop_duplicates(subset=['ID']) without sorting
C. Use df.drop_duplicates(keep='last') without sorting
D. Use df.sort_values('Score', ascending=False).drop_duplicates(subset=['ID'])

Solution

  1. Step 1: Sort DataFrame by Score descending

    Sorting by 'Score' descending puts highest scores first for each ID.
  2. Step 2: Drop duplicates by ID keeping first

    After sorting, dropping duplicates by 'ID' keeps the first (highest score) row per ID.
  3. Final Answer:

    df.sort_values('Score', ascending=False).drop_duplicates(subset=['ID']) -> Option D
  4. Quick Check:

    Sort then drop duplicates keeps highest score per ID [OK]
Hint: Sort by score descending before drop_duplicates to keep max [OK]
Common Mistakes:
  • Not sorting before dropping duplicates
  • Dropping duplicates on wrong column
  • Using keep='last' without sorting
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