0
0
Pandasdata~20 mins

GroupBy with custom functions in Pandas - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
GroupBy Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of GroupBy with a custom aggregation function
What is the output of this code snippet that groups data by 'Category' and applies a custom function to the 'Value' column?
Pandas
import pandas as pd

data = pd.DataFrame({
    'Category': ['A', 'A', 'B', 'B', 'C'],
    'Value': [10, 20, 10, 30, 50]
})

def custom_func(x):
    return x.max() - x.min()

result = data.groupby('Category')['Value'].agg(custom_func)
print(result)
A
Category
A    10
B    20
C     0
Name: Value, dtype: int64
B
Category
A    10
B    10
C    50
Name: Value, dtype: int64
C
Category
A    20
B    30
C    50
Name: Value, dtype: int64
D
Category
A    30
B    40
C    50
Name: Value, dtype: int64
Attempts:
2 left
💡 Hint
Think about what the custom function does: max minus min for each group.
data_output
intermediate
1:30remaining
Number of groups after grouping with a custom function
Given this DataFrame, how many groups are formed when grouping by the 'Type' column?
Pandas
import pandas as pd

data = pd.DataFrame({
    'Type': ['X', 'Y', 'X', 'Z', 'Y', 'Z', 'Z'],
    'Score': [5, 10, 15, 10, 20, 30, 40]
})
groups = data.groupby('Type')

count = len(groups)
A4
B7
C3
D2
Attempts:
2 left
💡 Hint
Count unique values in the 'Type' column.
🔧 Debug
advanced
2:00remaining
Identify the error in custom aggregation function usage
What error does this code raise when trying to apply a custom function to a groupby object?
Pandas
import pandas as pd

data = pd.DataFrame({
    'Group': ['A', 'A', 'B'],
    'Value': [1, 2, 3]
})

def faulty_func(x):
    return x + 1

result = data.groupby('Group').agg(faulty_func)
print(result)
AValueError: Function does not reduce
BAttributeError: 'DataFrameGroupBy' object has no attribute 'agg'
CTypeError: unsupported operand type(s) for +: 'DataFrame' and 'int'
DNo error, prints incremented values
Attempts:
2 left
💡 Hint
Check what the function receives and what operation it tries to do.
visualization
advanced
2:30remaining
Visualizing group means with a custom function
Which option correctly produces a bar plot of the mean 'Score' per 'Category' using a custom aggregation function?
Pandas
import pandas as pd
import matplotlib.pyplot as plt

data = pd.DataFrame({
    'Category': ['A', 'A', 'B', 'B', 'C'],
    'Score': [10, 20, 30, 40, 50]
})

def mean_func(x):
    return x.mean()

result = data.groupby('Category')['Score'].agg(mean_func)
result.plot(kind='bar')
plt.show()
ANo plot, code raises AttributeError
BA line plot showing scores over categories
CA scatter plot with categories on x-axis and scores on y-axis
DA bar plot showing bars at heights 15, 35, and 50 for categories A, B, and C respectively
Attempts:
2 left
💡 Hint
Check the plot kind and aggregation function used.
🚀 Application
expert
3:00remaining
Applying multiple custom functions with groupby
Given this DataFrame, which option correctly applies two custom functions to the 'Value' column grouped by 'Category' and returns a DataFrame with both results?
Pandas
import pandas as pd

data = pd.DataFrame({
    'Category': ['X', 'X', 'Y', 'Y', 'Z'],
    'Value': [1, 3, 5, 7, 9]
})

def range_func(x):
    return x.max() - x.min()

def mean_plus_one(x):
    return x.mean() + 1

result = data.groupby('Category')['Value'].agg([range_func, mean_plus_one])
print(result)
A
          range_func  mean_plus_one
Category                            
X                  3           2.0
Y                  2           6.0
Z                  1           9.0
B
          range_func  mean_plus_one
Category                            
X                  2           3.0
Y                  2           7.0
Z                  0          10.0
CTypeError: agg() takes 2 positional arguments but 3 were given
DKeyError: 'Value'
Attempts:
2 left
💡 Hint
Check how agg accepts a list of functions and the output format.