Counting missing values in Pandas - Time & Space Complexity
We want to know how long it takes to count missing values in a table as the table grows.
How does the time needed change when we have more rows or columns?
Analyze the time complexity of the following code snippet.
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, None, 4],
'B': [None, 2, 3, 4],
'C': [1, None, None, 4]
})
missing_count = df.isna().sum().sum()
This code counts all missing values in the whole table by first marking missing spots, then summing them up.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking each cell to see if it is missing (NaN).
- How many times: Once for every cell in the table (rows x columns).
As the table gets bigger, the time to count missing values grows with the total number of cells.
| Input Size (rows x columns) | Approx. Operations |
|---|---|
| 10 x 5 = 50 | About 50 checks |
| 100 x 5 = 500 | About 500 checks |
| 1000 x 5 = 5000 | About 5000 checks |
Pattern observation: The time grows directly with the number of cells; doubling rows or columns roughly doubles the work.
Time Complexity: O(n * m)
This means the time needed grows proportionally with the total number of cells in the table.
[X] Wrong: "Counting missing values only looks at columns, so time depends just on the number of columns."
[OK] Correct: The code checks every cell, so both rows and columns affect the time equally.
Understanding how counting missing data scales helps you handle bigger datasets confidently and shows you can think about efficiency clearly.
"What if we only count missing values in one column instead of the whole table? How would the time complexity change?"
Practice
df.isna().sum() do when applied to a DataFrame df?Solution
Step 1: Understand
This method returns a DataFrame of the same shape asdf.isna()dfwith True where values are missing and False otherwise.Step 2: Apply
Summing True values (which count as 1) per column gives the count of missing values in each column..sum()on the boolean DataFrameFinal Answer:
Counts the number of missing values in each column of the DataFrame -> Option BQuick Check:
df.isna().sum()counts missing per column [OK]
- Thinking sum() counts rows instead of missing values
- Confusing isna() with fillna()
- Assuming it replaces missing values
df?Solution
Step 1: Use
Both return a boolean DataFrame marking missing values as True.df.isna()ordf.isnull()to find missing valuesStep 2: Use
The first.sum().sum()to count all missing valuessum()sums missing per column, the second sums those counts to get total missing in the DataFrame.Final Answer:
df.isna().sum().sum() -> Option CQuick Check:
Total missing =df.isna().sum().sum()[OK]
- Using count() which counts non-missing values
- Using isna().count() which counts all rows, not missing
- Confusing isna() with isnull().count()
df below:import pandas as pd
data = {'A': [1, None, 3], 'B': [None, None, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)What is the output of
df.isna().sum()?Solution
Step 1: Identify missing values in each column
Column A has one None (missing), column B has two None values, column C has none.Step 2: Apply
This counts missing per column: A=1, B=2, C=0.df.isna().sum()Final Answer:
A 1 B 2 C 0 dtype: int64 -> Option DQuick Check:
Count missing per column matches output [OK]
- Mixing counts of missing and non-missing
- Miscounting missing in column B
- Assuming None counts as zero
import pandas as pd
data = {'X': [1, 2, None], 'Y': [None, 5, 6]}
df = pd.DataFrame(data)
missing = df.isna.sum()What is the error and how to fix it?
Solution
Step 1: Identify the error in method call
The code usesdf.isna.sum()missing parentheses afterisna, which is a method.Step 2: Correct the syntax
Usedf.isna().sum()to call the method and then sum missing values.Final Answer:
Missing parentheses after isna; fix with df.isna().sum() -> Option AQuick Check:
Method calls need parentheses [OK]
- Forgetting parentheses on isna()
- Using sum() instead of count() incorrectly
- Thinking None causes errors in counting
df with columns ['age', 'income', 'score']. You want to find the percentage of missing values in each column. Which code snippet correctly calculates this?Solution
Step 1: Count missing values per column
Usedf.isna().sum()to get missing counts per column.Step 2: Calculate percentage of missing values
Divide missing counts by total rowslen(df)and multiply by 100 to get percentage.Final Answer:
df.isna().sum() / len(df) * 100 -> Option AQuick Check:
Missing % = (missing count / total rows) * 100 [OK]
- Using count() which counts non-missing values
- Multiplying missing count by 100 without dividing
- Dividing count by missing count incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
