Sometimes data is incomplete or missing. We need to decide how to handle these gaps to keep our analysis accurate and useful.
Missing data strategies decision in Pandas
df.dropna() df.fillna(value) df.isna() df.notna()
dropna() removes rows or columns with missing data.
fillna() replaces missing data with a value you choose.
df.dropna()
df.fillna(0)df['Age'].fillna(df['Age'].mean())
df.dropna(axis=1)This code shows three ways to handle missing data: removing rows with missing values, filling missing values with zero, and filling missing ages with the average age.
import pandas as pd # Create a sample data frame with missing values data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, None, 30, None], 'Score': [85, 90, None, 88]} df = pd.DataFrame(data) print('Original DataFrame:') print(df) # Strategy 1: Drop rows with any missing data cleaned_drop = df.dropna() print('\nDataFrame after dropna():') print(cleaned_drop) # Strategy 2: Fill missing values with a constant filled_zero = df.fillna(0) print('\nDataFrame after fillna(0):') print(filled_zero) # Strategy 3: Fill missing Age with mean age mean_age = df['Age'].mean() filled_mean = df.copy() filled_mean['Age'] = filled_mean['Age'].fillna(mean_age) print(f'\nMean Age: {mean_age}') print('DataFrame after filling Age with mean:') print(filled_mean)
Dropping rows can reduce data size and may lose important information.
Filling missing values keeps data size but may introduce bias if not chosen carefully.
Always consider the context and why data is missing before choosing a strategy.
Missing data can be handled by dropping or filling values.
Use dropna() to remove missing data rows or columns.
Use fillna() to replace missing data with meaningful values.
Practice
What is the main purpose of using dropna() in pandas?
Solution
Step 1: Understand
dropna()functiondropna()removes rows or columns that have missing values (NaN).Step 2: Compare with other options
Replacing missing data or converting data types are done by other functions likefillna()orastype().Final Answer:
To remove rows or columns that contain missing data -> Option AQuick Check:
dropna()removes missing data rows/columns [OK]
- Confusing dropna with fillna
- Thinking dropna fills missing values
- Assuming dropna changes data types
Which of the following is the correct syntax to fill missing values in a DataFrame df with the value 0?
?
Solution
Step 1: Recall fillna syntax
The correct method to fill missing values isfillna()with the value as argument.Step 2: Check each option
df.fillna(0) usesdf.fillna(0)which is correct. Others have wrong method names or parameters.Final Answer:
df.fillna(0) -> Option AQuick Check:
Usefillna(value)to fill missing values [OK]
- Using dropna instead of fillna
- Wrong method name like fill() or replace()
- Passing parameters incorrectly
Given the DataFrame df below, what will be the output of df.fillna(method='ffill')?
import pandas as pd
df = pd.DataFrame({'A': [1, None, 3, None], 'B': [None, 2, None, 4]})
print(df.fillna(method='ffill'))Solution
Step 1: Understand forward fill method
method='ffill'fills missing values by copying the last known non-missing value forward.Step 2: Apply to DataFrame
For column A: 1 stays, None becomes 1, 3 stays, None becomes 3. For B: None stays None (no previous), 2 stays, None becomes 2, 4 stays.Final Answer:
Fills missing values by propagating last valid observation forward -> Option CQuick Check:
ffill copies last valid value forward [OK]
- Thinking fillna(method='ffill') fills with zero
- Confusing ffill with dropping rows
- Expecting error from method parameter
What is wrong with the following code if the goal is to remove all rows with missing data from DataFrame df?
df.fillna(drop=True)
Solution
Step 1: Check method and parameters
fillna()is for filling missing values and does not accept adropparameter.Step 2: Correct method for removing rows
To remove rows with missing data, usedropna()instead.Final Answer:
fillna()does not have adropparameter; usedropna()instead -> Option BQuick Check:
Use dropna() to remove missing data rows [OK]
- Using fillna() with invalid parameters
- Confusing fillna and dropna functions
- Expecting fillna to remove rows
You have a DataFrame df with many missing values scattered randomly. You want to keep as much data as possible but avoid rows with more than 2 missing values. Which pandas method and parameter combination is best?
Solution
Step 1: Understand the threshold parameter
dropna(thresh=n)keeps rows with at leastnnon-missing values.Step 2: Calculate threshold for max 2 missing values
If total columns arelen(df.columns), then rows must have at leastlen(df.columns) - 2non-missing values to keep.Step 3: Evaluate other options
Filling with zero or backward fill changes data but does not drop rows. Dropping columns removes data unnecessarily.Final Answer:
Usedf.dropna(thresh=len(df.columns)-2)to drop rows with more than 2 missing values -> Option DQuick Check:
dropna(thresh) keeps rows with enough non-NaNs [OK]
- Using fillna instead of dropping rows
- Dropping columns instead of rows
- Misunderstanding thresh parameter
Ready to prove it?
Pass the test and this pattern moves unknown
