Bird
Raised Fist0
Data Analysis Pythondata~20 mins

FacetGrid for multi-panel views in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
FacetGrid Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of FacetGrid with hue and col
What is the output of the following code snippet using seaborn's FacetGrid?
Data Analysis Python
import seaborn as sns
import matplotlib.pyplot as plt

penguins = sns.load_dataset('penguins')
g = sns.FacetGrid(penguins, col='species', hue='sex')
g.map(plt.scatter, 'bill_length_mm', 'bill_depth_mm').add_legend()
plt.close()  # Prevent plot display in test environment
print(len(g.axes.flatten()))
A3
B2
C1
D4
Attempts:
2 left
💡 Hint
Think about how many unique species are in the penguins dataset.
❓ data_output
intermediate
2:00remaining
Number of panels in FacetGrid with row and col
Given the following code, how many total panels will the FacetGrid create?
Data Analysis Python
import seaborn as sns
penguins = sns.load_dataset('penguins')
g = sns.FacetGrid(penguins, row='island', col='species')
print(len(g.axes.flatten()))
A3
B9
C6
D12
Attempts:
2 left
💡 Hint
Count unique values in 'island' and 'species' columns.
❓ visualization
advanced
2:00remaining
Identify the FacetGrid layout from the plot description
You create a FacetGrid with parameters row='sex', col='island', and hue='species'. Which layout best describes the resulting grid?
ARows represent species; columns represent sex; colors represent islands.
BRows represent islands; columns represent species; colors represent sex.
CRows represent species; columns represent islands; colors represent sex.
DRows represent male and female; columns represent islands; colors represent species.
Attempts:
2 left
💡 Hint
Remember the parameters row, col, and hue correspond to rows, columns, and colors respectively.
🔧 Debug
advanced
2:00remaining
Why does this FacetGrid code raise an error?
Consider this code snippet: import seaborn as sns import matplotlib.pyplot as plt penguins = sns.load_dataset('penguins') g = sns.FacetGrid(penguins, col='species', row='sex') g.map(sns.histplot, 'flipper_length_mm') plt.show() Why does this code raise an error?
Asns.histplot cannot be used with FacetGrid.map because it expects a DataFrame, not arrays.
BThe 'sex' column contains missing values causing the FacetGrid to fail.
CThe map function requires matplotlib.pyplot functions, not seaborn functions.
DFacetGrid requires numeric columns for row and col parameters, but 'sex' is categorical.
Attempts:
2 left
💡 Hint
Check the expected input types for functions used with FacetGrid.map.
🚀 Application
expert
3:00remaining
Create a FacetGrid showing mean body mass per species and island
You want to create a FacetGrid that shows the mean body mass (in grams) for each species on each island. Which approach correctly prepares the data and creates the FacetGrid?
AUse sns.FacetGrid(penguins, col='species', row='island').map(sns.barplot, 'species', 'body_mass_g') directly on raw data.
BUse penguins.pivot_table(index='species', columns='island', values='body_mass_g', aggfunc='mean') and plot with FacetGrid using col='species'.
CUse penguins.groupby(['species', 'island'])['body_mass_g'].mean().reset_index() and then sns.FacetGrid with col='species', row='island' mapping sns.barplot with x='island', y='body_mass_g'.
DUse sns.FacetGrid(penguins, col='species').map(sns.barplot, 'island', 'body_mass_g') without aggregation.
Attempts:
2 left
💡 Hint
FacetGrid works best with pre-aggregated data for bar plots when grouping by multiple variables.

Practice

(1/5)
1. What is the main purpose of using FacetGrid in data visualization?
easy
A. To perform statistical tests on data
B. To create a single plot with multiple lines
C. To split data into multiple panels for easier comparison
D. To clean and preprocess data before plotting

Solution

  1. Step 1: Understand FacetGrid functionality

    FacetGrid is designed to split data into multiple smaller plots based on categories.
  2. Step 2: Identify the main use case

    This splitting helps compare subsets of data side by side visually.
  3. Final Answer:

    To split data into multiple panels for easier comparison -> Option C
  4. Quick Check:

    FacetGrid = multi-panel comparison [OK]
Hint: FacetGrid = split data into panels for comparison [OK]
Common Mistakes:
  • Thinking FacetGrid creates a single combined plot
  • Confusing FacetGrid with data cleaning tools
  • Assuming FacetGrid performs statistical analysis
2. Which of the following is the correct way to create a FacetGrid with columns based on the 'species' column in a DataFrame df using seaborn?
easy
A. sns.FacetGrid(df, split='species')
B. sns.FacetGrid(df, row='species')
C. sns.FacetGrid(df, group='species')
D. sns.FacetGrid(df, col='species')

Solution

  1. Step 1: Recall FacetGrid parameters

    The parameter to split data into columns is col.
  2. Step 2: Match parameter with 'species'

    Using col='species' splits the grid into columns by species.
  3. Final Answer:

    sns.FacetGrid(df, col='species') -> Option D
  4. Quick Check:

    Use col= for columns in FacetGrid [OK]
Hint: Use col='column_name' to split by columns [OK]
Common Mistakes:
  • Using 'group' or 'split' which are invalid parameters
  • Confusing row and col parameters
  • Missing quotes around column name
3. Given the following code, what will be the output type of g?
import seaborn as sns
import pandas as pd

df = pd.DataFrame({
    'category': ['A', 'A', 'B', 'B'],
    'value': [10, 15, 10, 20]
})
g = sns.FacetGrid(df, col='category')
medium
A. A FacetGrid object with two column panels for categories A and B
B. A DataFrame filtered by category
C. A matplotlib Figure object
D. A dictionary of plots keyed by category

Solution

  1. Step 1: Understand FacetGrid return type

    Creating a FacetGrid returns a FacetGrid object that manages multiple plot panels.
  2. Step 2: Check the col parameter effect

    Using col='category' splits the grid into columns for each unique category value, here 'A' and 'B'.
  3. Final Answer:

    A FacetGrid object with two column panels for categories A and B -> Option A
  4. Quick Check:

    FacetGrid object = multi-panel grid [OK]
Hint: FacetGrid returns a grid object, not data or dict [OK]
Common Mistakes:
  • Expecting a DataFrame instead of a FacetGrid
  • Thinking it returns a matplotlib Figure directly
  • Assuming it returns a dictionary of plots
4. What is wrong with this code snippet?
import seaborn as sns
import pandas as pd

df = pd.DataFrame({
    'type': ['X', 'Y', 'X', 'Y'],
    'score': [5, 7, 6, 8]
})
g = sns.FacetGrid(df, col=type)
g.map(sns.histplot, 'score')
medium
A. DataFrame is missing required columns
B. The variable 'type' is not defined; it should be a string 'type'
C. sns.histplot cannot be used with FacetGrid
D. FacetGrid cannot use 'col' parameter

Solution

  1. Step 1: Check parameter usage in FacetGrid

    The col parameter expects a string with the column name, not a variable.
  2. Step 2: Identify the error in code

    Using col=type without quotes causes a NameError because 'type' is not defined as a variable.
  3. Final Answer:

    The variable 'type' is not defined; it should be a string 'type' -> Option B
  4. Quick Check:

    Use quotes for column names in FacetGrid [OK]
Hint: Always quote column names in FacetGrid parameters [OK]
Common Mistakes:
  • Using variable names without quotes for column names
  • Thinking FacetGrid can't use histplot
  • Assuming DataFrame columns are missing
5. You want to create a multi-panel plot showing the distribution of 'total_bill' by 'day' and 'time' from the seaborn 'tips' dataset. Which code correctly creates a FacetGrid with rows for 'time' and columns for 'day' and plots histograms of 'total_bill'?
hard
A. g = sns.FacetGrid(tips, row='time', col='day') g.map(sns.histplot, 'total_bill')
B. g = sns.FacetGrid(tips, col='time', row='day') g.map(sns.histplot, 'total_bill')
C. g = sns.FacetGrid(tips, group='time', split='day') g.map(sns.histplot, 'total_bill')
D. g = sns.FacetGrid(tips, row='total_bill', col='day') g.map(sns.histplot, 'time')

Solution

  1. Step 1: Identify correct row and column parameters

    Rows should be split by 'time' and columns by 'day' as per requirement.
  2. Step 2: Confirm correct mapping of histogram

    Use g.map(sns.histplot, 'total_bill') to plot histograms of 'total_bill'.
  3. Step 3: Check for invalid parameters

    Options with 'group' or swapped row/col are incorrect.
  4. Final Answer:

    g = sns.FacetGrid(tips, row='time', col='day') g.map(sns.histplot, 'total_bill') -> Option A
  5. Quick Check:

    row='time', col='day', map histplot on 'total_bill' [OK]
Hint: Use row= for rows, col= for columns, map plot on target column [OK]
Common Mistakes:
  • Swapping row and col parameters
  • Using invalid parameters like group or split
  • Mapping plot on wrong column
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