Bird
Raised Fist0
Data Analysis Pythondata~20 mins

Boolean indexing in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Boolean Indexing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Boolean Indexing on DataFrame
What is the output of this code snippet using Boolean indexing on a DataFrame?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({
    'Name': ['Anna', 'Bob', 'Cara', 'Dave'],
    'Age': [23, 35, 22, 40],
    'Score': [88, 92, 85, 95]
})

result = df[df['Age'] > 30]
print(result)
A
   Name  Age  Score
0  Anna   23     88
2  Cara   22     85
B{'Name': ['Bob', 'Dave'], 'Age': [35, 40], 'Score': [92, 95]}
C
   Name  Age  Score
1   Bob   35     92
3  Dave   40     95
D
Empty DataFrame
Columns: [Name, Age, Score]
Index: []
Attempts:
2 left
💡 Hint
Look for rows where Age is greater than 30.
❓ data_output
intermediate
1:30remaining
Count of Rows After Boolean Indexing
How many rows remain after applying this Boolean indexing?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({
    'City': ['NY', 'LA', 'NY', 'SF', 'LA'],
    'Temperature': [75, 85, 70, 65, 90]
})

filtered = df[df['City'] == 'LA']
print(len(filtered))
A3
B1
C0
D2
Attempts:
2 left
💡 Hint
Count how many times 'LA' appears in the City column.
🔧 Debug
advanced
2:00remaining
Identify the Error in Boolean Indexing
What error does this code raise when trying to filter a DataFrame?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({
    'Product': ['A', 'B', 'C'],
    'Price': [100, 200, 300]
})

filtered = df[df.Price > 150]
filtered = df[df['Price' > 150]]
print(filtered)
ASyntaxError: invalid syntax
BTypeError: '>' not supported between instances of 'str' and 'int'
CKeyError: True
DNo error, prints filtered DataFrame
Attempts:
2 left
💡 Hint
Look carefully at the second filtering line syntax.
❓ visualization
advanced
2:30remaining
Visualize Filtered Data Using Boolean Indexing
Which option shows the correct plot of scores for students older than 20?
Data Analysis Python
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'Student': ['Tom', 'Lucy', 'John', 'Anna'],
    'Age': [19, 22, 21, 18],
    'Score': [88, 95, 90, 85]
})

filtered = df[df['Age'] > 20]
plt.bar(filtered['Student'], filtered['Score'])
plt.show()
ABar chart with bars for Lucy and John only
BBar chart with bars for Tom, Lucy, John, and Anna
CLine chart with scores for Lucy and John
DEmpty plot with no bars
Attempts:
2 left
💡 Hint
Check which students have Age > 20.
🧠 Conceptual
expert
3:00remaining
Effect of Boolean Indexing on DataFrame Copy vs View
After applying Boolean indexing on a DataFrame, what is true about the resulting DataFrame?
AIt may be a copy or a view depending on the operation; changes might or might not affect the original
BIt is always a view; changes to it affect the original DataFrame
CIt is a reference to the original DataFrame; changes always affect the original
DIt is always a copy; changes to it do not affect the original DataFrame
Attempts:
2 left
💡 Hint
Think about how pandas handles filtering and memory.

Practice

(1/5)
1. What does Boolean indexing do in data analysis?
easy
A. Selects data based on true or false conditions
B. Sorts data in ascending order
C. Converts data types automatically
D. Merges two datasets together

Solution

  1. Step 1: Understand the purpose of Boolean indexing

    Boolean indexing uses true/false values to filter data.
  2. Step 2: Compare with other options

    Sorting, converting types, and merging are different operations.
  3. Final Answer:

    Selects data based on true or false conditions -> Option A
  4. Quick Check:

    Boolean indexing = filter by true/false [OK]
Hint: Boolean indexing filters data by true/false values [OK]
Common Mistakes:
  • Confusing Boolean indexing with sorting
  • Thinking it changes data types
  • Mixing it up with merging datasets
2. Which of the following is the correct syntax to select rows where column 'age' is greater than 30 in a DataFrame df?
easy
A. df['age' > 30]
B. df[df.age = 30]
C. df[df['age'] > 30]
D. df[df['age'] < 30]

Solution

  1. Step 1: Identify correct Boolean indexing syntax

    Use df[condition], where condition is df['age'] > 30.
  2. Step 2: Check other options for errors

    df['age' > 30] has wrong brackets, C uses assignment (=) instead of comparison, D uses wrong comparison sign.
  3. Final Answer:

    df[df['age'] > 30] -> Option C
  4. Quick Check:

    Correct syntax uses df[condition] with comparison [OK]
Hint: Use df[condition] with comparison operators for filtering [OK]
Common Mistakes:
  • Using assignment '=' instead of comparison '>'
  • Wrong bracket placement
  • Using incorrect comparison signs
3. Given the DataFrame df below:
import pandas as pd
data = {'score': [85, 42, 78, 90, 55]}
df = pd.DataFrame(data)

What is the output of df[df['score'] >= 78]?
medium
A. Rows with scores 85, 78, and 90
B. Rows with scores 42 and 55
C. All rows because condition is ignored
D. Empty DataFrame

Solution

  1. Step 1: Apply the condition df['score'] >= 78

    This selects rows where score is 78 or more: 85, 78, 90.
  2. Step 2: Check which rows match

    Rows with scores 42 and 55 do not match, so they are excluded.
  3. Final Answer:

    Rows with scores 85, 78, and 90 -> Option A
  4. Quick Check:

    Filter keeps scores >= 78 [OK]
Hint: Filter keeps rows where condition is true [OK]
Common Mistakes:
  • Including rows that don't meet the condition
  • Thinking condition is ignored
  • Expecting empty output incorrectly
4. What is wrong with this code snippet?
import pandas as pd
data = {'value': [10, 20, 30, 40]}
df = pd.DataFrame(data)
filtered = df[df.value > 25]
medium
A. It will raise a syntax error
B. It will raise an AttributeError
C. It returns an empty DataFrame
D. It works correctly and filters rows with value > 25

Solution

  1. Step 1: Check attribute access for column 'value'

    Using df.value is valid if column name has no spaces or special chars.
  2. Step 2: Verify filtering condition

    df.value > 25 selects rows with values 30 and 40 correctly.
  3. Final Answer:

    It works correctly and filters rows with value > 25 -> Option D
  4. Quick Check:

    Attribute access works for simple column names [OK]
Hint: Use df.column_name if no spaces or special chars [OK]
Common Mistakes:
  • Assuming df.value always causes error
  • Expecting syntax error
  • Thinking it returns empty DataFrame
5. You have a DataFrame df with a column 'status' containing values 'pass', 'fail', and 'pending'. How do you select only rows where 'status' is either 'pass' or 'pending' using Boolean indexing?
hard
A. df[df['status'] == 'pass' and 'pending']
B. df[(df['status'] == 'pass') | (df['status'] == 'pending')]
C. df[df['status'] in ['pass', 'pending']]
D. df[df['status'] == 'pass' or df['status'] == 'pending']

Solution

  1. Step 1: Use element-wise OR for multiple conditions

    Use | between conditions inside parentheses for correct Boolean indexing.
  2. Step 2: Avoid Python keywords and wrong syntax

    'and' and 'or' do not work element-wise; 'in' is not vectorized here.
  3. Final Answer:

    df[(df['status'] == 'pass') | (df['status'] == 'pending')] -> Option B
  4. Quick Check:

    Use | with parentheses for multiple conditions [OK]
Hint: Use | with parentheses for multiple conditions [OK]
Common Mistakes:
  • Using 'and' or 'or' instead of | and &
  • Trying to use 'in' directly on Series
  • Missing parentheses around conditions
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