Handling missing data is common in real-world datasets like sales, weather, or survey data where some entries might be missing or not recorded.
💼 Career
Data scientists and analysts must know how to detect and handle missing values to prepare clean data for analysis and modeling.
Progress0 / 4 steps
1
Create a DataFrame with missing values
Import pandas as pd and numpy as np. Create a DataFrame called sales_data with a column 'Day' containing 'Monday', 'Tuesday', 'Wednesday', 'Thursday', and 'Friday'. Add a column 'Sales' with values 200, None, 150, np.nan, and 300 respectively.
Pandas
Hint
Use pd.DataFrame to create the table. Use None and np.nan to represent missing values.
2
Count missing values in the DataFrame
Create a variable called missing_count that stores the total number of missing values in the sales_data DataFrame using the isna() and sum() methods.
Pandas
Hint
Use sales_data.isna() to find missing values, then sum twice to get total count.
3
Remove rows with missing values
Create a new DataFrame called clean_sales by removing all rows with missing values from sales_data using the dropna() method.
Pandas
Hint
Use dropna() on the DataFrame to remove rows with missing values.
4
Print the cleaned DataFrame
Print the clean_sales DataFrame to show the sales data without missing values.
Pandas
Hint
Use print(clean_sales) to display the DataFrame without missing values.
Practice
(1/5)
1. What do NaN and None represent in a pandas DataFrame?
easy
A. Missing or null data values
B. Valid numeric data
C. Column headers
D. Index labels
Solution
Step 1: Understand the role of NaN and None in pandas
Both NaN and None are used to mark missing or null data in pandas DataFrames.
Step 2: Differentiate from other DataFrame elements
They do not represent valid data, headers, or indexes but indicate absence of data.
Final Answer:
Missing or null data values -> Option A
Quick Check:
NaN and None = Missing data [OK]
Hint: NaN and None always mean missing data in pandas [OK]
Common Mistakes:
Thinking NaN is a valid number
Confusing None with column names
Assuming NaN is an index label
2. Which of the following is the correct way to check for missing values in a pandas DataFrame df?
easy
A. df.isna()
B. df.notna()
C. df.isnan()
D. df.ismissing()
Solution
Step 1: Recall pandas functions for missing data
The correct function to check for missing values is isna(), which returns a boolean DataFrame indicating missing entries.
Step 2: Identify incorrect options
notna() returns a boolean DataFrame indicating non-missing entries; isnan() and ismissing() do not exist in pandas.
Final Answer:
df.isna() -> Option A
Quick Check:
Use isna() to find missing values [OK]
Hint: Use df.isna() to find missing values in pandas [OK]
Common Mistakes:
Using non-existent df.isnan()
Using df.notna() which checks non-missing values
Trying df.ismissing() which is invalid
3. Given the code:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [None, 2, 3]})
result = df.isna().sum().to_dict()
What is the value of result?
medium
A. {'A': 0, 'B': 0}
B. {'A': 0, 'B': 1}
C. {'A': 1, 'B': 0}
D. {'A': 1, 'B': 1}
Solution
Step 1: Identify missing values in each column
Column 'A' has one np.nan (missing), column 'B' has one None (missing).
Step 2: Use isna() and sum() to count missing per column
df.isna() marks missing as True, sum() counts Trues per column, resulting in {'A': 1, 'B': 1}.
Final Answer:
{'A': 1, 'B': 1} -> Option D
Quick Check:
Count missing with isna().sum() = {'A':1,'B':1} [OK]
Hint: Count missing with df.isna().sum() per column [OK]
Common Mistakes:
Ignoring None as missing in column B
Confusing sum() to count non-missing
Assuming np.nan and None are treated differently here
The second row has None, which pandas treats as missing (NaN).
Step 2: Use fillna(0) to replace missing with zero
The fillna(0) replaces the missing value with 0, so the DataFrame becomes 1, 0, 3.
Final Answer:
X
0 1
1 0
2 3 -> Option C
Quick Check:
fillna(0) replaces None with 0 [OK]
Hint: fillna(0) replaces missing values with zero [OK]
Common Mistakes:
Expecting None to remain after fillna
Confusing fillna with dropna
Assuming fillna changes non-missing values
5. You have a DataFrame df with columns 'A' and 'B' containing some NaN and None values. You want to replace all missing values in 'A' with the mean of 'A' and all missing values in 'B' with the string 'missing'. Which code correctly does this?
hard
A. df.fillna({'A': df['A'].mean(), 'B': 'missing'})
B. df['A'] = df['A'].fillna(df['A'].mean())
df['B'] = df['B'].fillna('missing')
C. df['A'].fillna(df['A'].mean())
df['B'].fillna('missing')
D. df.fillna(df.mean())
df['B'] = df['B'].fillna('missing')
Solution
Step 1: Replace missing in 'A' with its mean
Use df['A'].fillna(df['A'].mean()) and assign back to 'A' to update the column.
Step 2: Replace missing in 'B' with 'missing'
Use df['B'].fillna('missing') and assign back to 'B' to update that column.
Step 3: Check other options for correctness
df.fillna({'A': df['A'].mean(), 'B': 'missing'}) does not assign back, so changes are not saved; df['A'].fillna(df['A'].mean())
df['B'].fillna('missing') also misses assignment; df.fillna(df.mean())
df['B'] = df['B'].fillna('missing') tries to fill numeric mean for all columns which fails for 'B'.
Final Answer:
df['A'] = df['A'].fillna(df['A'].mean())
df['B'] = df['B'].fillna('missing') -> Option B
Quick Check:
Assign fillna results back to columns [OK]
Hint: Assign fillna results back to columns to save changes [OK]
Common Mistakes:
Not assigning fillna result back to DataFrame
Using fillna without specifying columns
Trying to fill numeric mean into string column
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.