drop_duplicates() for removal in Pandas - Time & Space Complexity
When we remove duplicate rows from data using pandas, it is important to know how the time taken grows as the data gets bigger.
We want to understand how the work done changes when the number of rows increases.
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']
})
unique_df = df.drop_duplicates()
This code creates a small table and removes duplicate rows, keeping only unique rows.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking each row against others to find duplicates.
- How many times: Each row is hashed and checked once during the process.
As the number of rows grows, the time to find duplicates grows roughly in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 checks |
| 100 | About 100 checks |
| 1000 | About 1000 checks |
Pattern observation: Doubling the rows roughly doubles the work needed.
Time Complexity: O(n)
This means the time to remove duplicates grows directly in proportion to the number of rows.
[X] Wrong: "Removing duplicates takes time proportional to the square of the number of rows because every row is compared to every other row."
[OK] Correct: pandas uses efficient hashing and indexing internally, so it does not compare every row to every other row directly.
Understanding how data operations scale helps you write code that works well even with large datasets, a key skill in data science roles.
"What if we used drop_duplicates() on only one column instead of all columns? How would the time complexity change?"
Practice
drop_duplicates() function do in pandas?Solution
Step 1: Understand the purpose of
This function is designed to remove rows that appear more than once in a DataFrame.drop_duplicates()Step 2: Compare options with function behavior
Only Removes repeated rows from a DataFrame correctly describes removing repeated rows. Other options describe different functions.Final Answer:
Removes repeated rows from a DataFrame -> Option AQuick Check:
drop_duplicates() removes repeats [OK]
- Confusing drop_duplicates() with sorting functions
- Thinking it adds or modifies data instead of removing duplicates
- Assuming it changes data types
df?Solution
Step 1: Recall the exact pandas method name
The correct method to remove duplicates isdrop_duplicates().Step 2: Check each option for correct syntax
Only df.drop_duplicates() uses the correct method name and syntax. Others are invalid pandas methods.Final Answer:
df.drop_duplicates() -> Option DQuick Check:
Correct method name is drop_duplicates() [OK]
- Using incorrect method names like remove_duplicates()
- Adding extra words like delete or rows
- Confusing with other DataFrame methods
df below:import pandas as pd
data = {'A': [1, 2, 2, 3], 'B': ['x', 'y', 'y', 'z']}
df = pd.DataFrame(data)
print(df.drop_duplicates())What will be the output?
Solution
Step 1: Identify duplicate rows in the DataFrame
Rows 2 and 3 have the same values (A=2, B='y'). So one will be removed.Step 2: Understand default behavior of drop_duplicates()
By default, it keeps the first occurrence and removes later duplicates. So row 1 stays, row 2 is removed.Final Answer:
Rows with index 0, 1, and 3 -> Option BQuick Check:
First duplicates kept, later removed [OK]
- Assuming last duplicate is kept instead of first
- Thinking all duplicates are removed including first
- Confusing row indices after removal
df?df.drop_duplicates(inplace=True) print(df.drop_duplicates())
Solution
Step 1: Understand inplace=True effect
Using inplace=True modifies df directly by removing duplicates.Step 2: Analyze print statement
After the first call, df is already deduplicated. The second call to df.drop_duplicates() is redundant as it returns the same DataFrame since there are no duplicates left.Final Answer:
Calling drop_duplicates() twice is redundant -> Option AQuick Check:
Second call redundant after inplace [OK]
- Thinking drop_duplicates() lacks inplace parameter
- Assuming print statement is wrong syntax
- Believing calling twice causes error
df with columns ['Name', 'Age', 'City']. You want to remove duplicates only based on Name and City, keeping the last occurrence. Which code achieves this?Solution
Step 1: Use subset parameter to specify columns
To check duplicates only on 'Name' and 'City', use subset=['Name', 'City'].Step 2: Set keep='last' to keep last occurrence
keep='last' keeps the last duplicate row, removing earlier ones.Final Answer:
df.drop_duplicates(subset=['Name', 'City'], keep='last') -> Option CQuick Check:
subset selects columns; keep='last' keeps last duplicate [OK]
- Using 'columns' instead of 'subset' parameter
- Forgetting to set keep='last' to keep last occurrence
- Selecting wrong columns for subset
Ready to prove it?
Pass the test and this pattern moves unknown
