Exploratory Data Analysis (EDA) template in Data Analysis Python - Time & Space Complexity
We want to understand how the time needed to explore data grows as the data size increases.
How does the work change when we have more rows or columns to analyze?
Analyze the time complexity of the following EDA template code.
import pandas as pd
def eda_template(df):
print(df.head())
print(df.describe())
print(df.info())
for col in df.columns:
print(f"Unique values in {col}:", df[col].nunique())
This code prints basic summaries and counts unique values for each column in the data.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Loop over all columns to count unique values.
- How many times: Once per column in the dataset.
The time grows mainly with the number of columns because we count unique values for each.
| Input Size (columns) | Approx. Operations |
|---|---|
| 10 | 10 unique counts |
| 100 | 100 unique counts |
| 1000 | 1000 unique counts |
Pattern observation: The work increases linearly with the number of columns.
Time Complexity: O(c * n)
This means the time grows with both the number of columns (c) and the number of rows (n) because counting unique values scans each column's data.
[X] Wrong: "The time only depends on the number of columns, not rows."
[OK] Correct: Counting unique values requires looking at every row in each column, so rows affect time too.
Understanding how data size affects EDA steps helps you explain your approach clearly and shows you think about efficiency in real projects.
"What if we added a nested loop to compare every pair of columns? How would the time complexity change?"
Practice
Solution
Step 1: Understand EDA's role
EDA is used to explore and understand data before any modeling or cleaning.Step 2: Compare options
Only To understand the data quickly and find patterns correctly states EDA's purpose as understanding data quickly and finding patterns.Final Answer:
To understand the data quickly and find patterns -> Option CQuick Check:
EDA = Understand data fast [OK]
- Confusing EDA with model building
- Thinking EDA skips data checking
- Assuming EDA creates final reports
Solution
Step 1: Recall DataFrame methods
df.info() shows data types, non-null counts, and memory usage.Step 2: Compare with other methods
df.describe() gives stats, df.plot() makes graphs, df.head() shows rows. Only df.info() summarizes structure.Final Answer:
df.info() -> Option BQuick Check:
DataFrame structure = df.info() [OK]
- Using df.describe() for structure instead of stats
- Confusing df.head() with info summary
- Trying to plot before understanding data
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 2, 3], 'B': [4, 5, 6, 7]})
print(df['A'].value_counts())What is the output?
Solution
Step 1: Understand value_counts()
It counts how many times each unique value appears in the column.Step 2: Count values in column 'A'
Values are 1 (once), 2 (twice), 3 (once). value_counts() sorts by frequency descending, so: 2 2 1 1 3 1 Name: A, dtype: int64Final Answer:
2 2 1 1 3 1 Name: A, dtype: int64 -> Option AQuick Check:
Count unique values = 2 2 1 1 3 1 Name: A, dtype: int64 [OK]
- Mixing counts of column B instead of A
- Misreading counts order
- Expecting error from value_counts()
import pandas as pd
df = pd.DataFrame({'X': [1, 2, None, 4], 'Y': [5, None, 7, 8]})
print(df.describe())But the output misses some rows. What is the likely problem?
Solution
Step 1: Understand describe() behavior
describe() calculates stats on numeric columns but skips missing values in calculations.Step 2: Check missing data effect
Rows with None are ignored in count and stats, so output shows fewer rows counted.Final Answer:
describe() excludes rows with missing values by default -> Option AQuick Check:
Missing data skipped in describe() = describe() excludes rows with missing values by default [OK]
- Thinking describe() drops entire rows
- Assuming syntax error causes missing rows
- Believing describe() works only on non-numeric data
df with columns age, income, and gender. You want to quickly check if income differs by gender. Which EDA step is best?Solution
Step 1: Identify goal
You want to compare income by gender groups.Step 2: Choose correct EDA method
Grouping by gender and calculating mean income shows differences clearly.Final Answer:
Use df.groupby('gender')['income'].mean() to compare averages -> Option DQuick Check:
Group and average to compare = Usedf.groupby('gender')['income'].mean()to compare averages [OK]
- Using describe() without grouping
- Plotting unrelated columns
- Dropping data before checking
Ready to prove it?
Pass the test and this pattern moves unknown
