Bird
Raised Fist0
Data Analysis Pythondata~20 mins

First data analysis walkthrough in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
First Data Analysis Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of basic data filtering
What is the output of this code that filters rows where age is greater than 30?
Data Analysis Python
import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 35, 30, 40]}
df = pd.DataFrame(data)
filtered = df[df['age'] > 30]
print(filtered)
A
    name  age
1    Bob   35
3  David   40
B
Empty DataFrame
Columns: [name, age]
Index: []
C
    name  age
1    Bob   35
2  Charlie 30
3  David  40
D
    name  age
0  Alice   25
2  Charlie 30
Attempts:
2 left
💡 Hint
Look for rows where the age value is strictly greater than 30.
❓ data_output
intermediate
1:30remaining
Count unique values in a column
What is the output of this code that counts unique values in the 'city' column?
Data Analysis Python
import pandas as pd

data = {'name': ['Anna', 'Ben', 'Cara', 'Dan'], 'city': ['NY', 'LA', 'NY', 'SF']}
df = pd.DataFrame(data)
count = df['city'].nunique()
print(count)
A4
B3
C2
DError: AttributeError
Attempts:
2 left
💡 Hint
Count how many different cities appear in the list.
❓ visualization
advanced
2:30remaining
Identify the correct bar chart output
Which option shows the correct bar chart output for the count of fruits in this data?
Data Analysis Python
import pandas as pd
import matplotlib.pyplot as plt

data = {'fruit': ['apple', 'banana', 'apple', 'orange', 'banana', 'banana']}
df = pd.DataFrame(data)
counts = df['fruit'].value_counts()
counts.plot(kind='bar')
plt.show()
ABar chart with bars: banana=3, apple=2, orange=1
BBar chart with bars: apple=3, banana=2, orange=1
CBar chart with bars: orange=3, apple=2, banana=1
DBar chart with bars: apple=1, banana=1, orange=1
Attempts:
2 left
💡 Hint
Count how many times each fruit appears in the list.
🔧 Debug
advanced
2:00remaining
Identify the error in data aggregation code
What error does this code produce when trying to calculate the mean age grouped by city?
Data Analysis Python
import pandas as pd

data = {'name': ['Eve', 'Frank'], 'age': [28, 33], 'city': ['NY', 'LA']}
df = pd.DataFrame(data)
result = df.groupby('city')['age'].mean
print(result())
AAttributeError: 'DataFrame' object has no attribute 'groupby'
BKeyError: 'age'
CTypeError: 'method' object is not callable
DNo error, prints mean ages
Attempts:
2 left
💡 Hint
Check if the mean function is called correctly.
🚀 Application
expert
2:30remaining
Determine the number of rows after multiple filters
Given this DataFrame, how many rows remain after filtering for age >= 30 and city == 'NY'?
Data Analysis Python
import pandas as pd

data = {'name': ['Gina', 'Hank', 'Ivy', 'Jack'], 'age': [29, 31, 30, 35], 'city': ['NY', 'NY', 'LA', 'NY']}
df = pd.DataFrame(data)
filtered = df[(df['age'] >= 30) & (df['city'] == 'NY')]
print(len(filtered))
A0
B3
C1
D2
Attempts:
2 left
💡 Hint
Check each row if both conditions are true.

Practice

(1/5)
1. What is the main purpose of using head() on a DataFrame during the first data analysis walkthrough?
easy
A. To check the data types of each column
B. To get summary statistics of numerical columns
C. To quickly see the first few rows of the data
D. To remove missing values from the data

Solution

  1. Step 1: Understand the function head()

    The head() function shows the first few rows of a DataFrame, usually the first 5 rows by default.
  2. Step 2: Purpose in data analysis walkthrough

    Seeing the first few rows helps you quickly understand what kind of data you have and check if it loaded correctly.
  3. Final Answer:

    To quickly see the first few rows of the data -> Option C
  4. Quick Check:

    head() shows first rows [OK]
Hint: Remember: head() shows top rows fast [OK]
Common Mistakes:
  • Confusing head() with describe()
  • Thinking head() gives statistics
  • Assuming head() cleans data
2. Which of the following is the correct syntax to get a summary of data types and non-null counts in a DataFrame named df?
easy
A. df.describe()
B. df.info()
C. df.head()
D. df.summary()

Solution

  1. Step 1: Identify the function for data types and non-null counts

    The info() method on a DataFrame shows data types and counts of non-null values per column.
  2. Step 2: Match syntax with DataFrame df

    Calling df.info() correctly applies this method to the DataFrame named df.
  3. Final Answer:

    df.info() -> Option B
  4. Quick Check:

    info() shows data types and counts [OK]
Hint: Use info() to check data types and missing data [OK]
Common Mistakes:
  • Using describe() to check data types
  • Trying summary() which does not exist
  • Confusing head() with info()
3. Given the following code:
import pandas as pd
data = {'age': [25, 30, 22, 40, 28], 'salary': [50000, 60000, 45000, 80000, 52000]}
df = pd.DataFrame(data)
summary = df.describe()

What will be the output of summary.loc['mean', 'salary']?
medium
A. 52000.0
B. SyntaxError
C. 60000.0
D. 57400.0

Solution

  1. Step 1: Calculate the mean of the 'salary' column

    Sum salaries: 50000 + 60000 + 45000 + 80000 + 52000 = 287000. Number of entries: 5. Mean = 287000 / 5 = 57400.0.
  2. Step 2: Understand describe() output

    The describe() method returns a DataFrame with statistics including 'mean' as an index row. Accessing summary.loc['mean', 'salary'] gives the mean salary value.
  3. Final Answer:

    57400.0 -> Option D
  4. Quick Check:

    Mean salary = 57400.0 [OK]
Hint: Sum values and divide by count for mean [OK]
Common Mistakes:
  • Adding incorrectly or missing one value
  • Confusing mean with median or mode
  • Using wrong index or column name
4. You run the following code but get an error:
import pandas as pd
data = {'name': ['Alice', 'Bob'], 'age': [25, 30]}
df = pd.DataFrame(data)
print(df.describe())

What is the most likely reason for the error or unexpected output?
medium
A. The describe() method cannot handle string columns by default
B. The DataFrame is missing a numeric column
C. The DataFrame is empty
D. The describe() method requires a parameter

Solution

  1. Step 1: Check DataFrame columns and types

    The DataFrame has a string column 'name' and a numeric column 'age'.
  2. Step 2: Understand describe() behavior

    By default, describe() summarizes only numeric columns. It ignores string columns unless specified.
  3. Final Answer:

    The describe() method cannot handle string columns by default -> Option A
  4. Quick Check:

    describe() skips strings by default [OK]
Hint: describe() defaults to numeric columns only [OK]
Common Mistakes:
  • Expecting describe() to summarize strings automatically
  • Thinking DataFrame is empty
  • Assuming describe() needs parameters always
5. You have a DataFrame df with columns ['product', 'price', 'quantity']. You want to quickly find the average price of products that have quantity greater than 10. Which code snippet correctly performs this first data analysis step?
hard
A. df[df['quantity'] > 10]['price'].mean()
B. df['price'].mean(df['quantity'] > 10)
C. df.mean()['price'] > 10
D. df.describe('price' > 10)

Solution

  1. Step 1: Filter rows where quantity > 10

    Use df[df['quantity'] > 10] to select only rows with quantity greater than 10.
  2. Step 2: Calculate mean of 'price' column on filtered data

    Access the 'price' column of filtered rows and call mean() to get average price.
  3. Final Answer:

    df[df['quantity'] > 10]['price'].mean() -> Option A
  4. Quick Check:

    Filter then mean() gives correct average [OK]
Hint: Filter first, then calculate mean [OK]
Common Mistakes:
  • Passing condition inside mean() incorrectly
  • Using mean() on entire DataFrame without filtering
  • Wrong syntax for describe()
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard