Using agg() for Multiple Aggregations in Data Science
📖 Scenario: You work in a small grocery store. You have sales data for different fruits sold in the last week. You want to find out some useful information like the total quantity sold, the average price, and the highest price for each fruit.
🎯 Goal: Build a program that uses the agg() function to calculate multiple summary statistics (total quantity, average price, maximum price) for each fruit in the sales data.
📋 What You'll Learn
Create a pandas DataFrame with fruit sales data including columns: 'Fruit', 'Quantity', and 'Price'.
Create a variable to hold the aggregation functions using agg().
Use groupby() on the 'Fruit' column and apply agg() to calculate total quantity, average price, and maximum price.
Print the resulting aggregated DataFrame.
💡 Why This Matters
🌍 Real World
Stores and businesses often need to summarize sales or inventory data by categories to make decisions.
💼 Career
Data analysts and scientists use groupby and agg functions to quickly get insights from large datasets.
Progress0 / 4 steps
1
Create the sales data DataFrame
Create a pandas DataFrame called sales with these exact columns and values: 'Fruit' with ['Apple', 'Banana', 'Apple', 'Banana', 'Orange'], 'Quantity' with [10, 5, 7, 3, 8], and 'Price' with [0.5, 0.3, 0.55, 0.35, 0.8].
Data Analysis Python
Hint
Use pd.DataFrame with a dictionary where keys are column names and values are lists of data.
2
Create the aggregation configuration
Create a variable called agg_funcs that holds a dictionary to specify these aggregations: 'Quantity' should use 'sum', and 'Price' should use ['mean', 'max'].
Data Analysis Python
Hint
Use a dictionary where keys are column names and values are aggregation functions or lists of functions.
3
Group by fruit and apply multiple aggregations
Use groupby() on the sales DataFrame by the 'Fruit' column and apply agg() with the agg_funcs dictionary. Store the result in a variable called summary.
Data Analysis Python
Hint
Use sales.groupby('Fruit').agg(agg_funcs) to get the grouped summary.
4
Print the aggregated summary
Print the summary DataFrame to display the total quantity, average price, and maximum price for each fruit.
Data Analysis Python
Hint
Use print(summary) to show the grouped aggregation results.
Practice
(1/5)
1. What does the agg() function do when used on a pandas DataFrame?
easy
A. It merges two DataFrames together.
B. It filters rows based on a condition.
C. It applies one or more aggregation functions to columns and returns summary results.
D. It sorts the DataFrame by column values.
Solution
Step 1: Understand the purpose of agg()
agg() is used to apply aggregation functions like sum, mean, count on DataFrame columns.
Step 2: Identify what agg() returns
It returns a summary DataFrame or Series with the aggregated results for specified columns.
Final Answer:
It applies one or more aggregation functions to columns and returns summary results. -> Option C
Quick Check:
agg() = summary aggregation [OK]
Hint: Remember: agg() summarizes columns with functions fast [OK]
Common Mistakes:
Thinking agg() filters or sorts data
Confusing agg() with merge or join
Expecting agg() to modify original data
2. Which of the following is the correct syntax to apply agg() with multiple functions on a DataFrame column named 'sales'?
easy
A. df['sales'].agg(['sum', 'mean'])
B. df.agg('sales', ['sum', 'mean'])
C. df.agg({'sales': 'sum', 'mean'})
D. df['sales'].agg('sum', 'mean')
Solution
Step 1: Check correct agg() syntax for multiple functions
To apply multiple functions on one column, pass a list of function names inside agg() like agg(['sum', 'mean']).
Step 2: Validate the syntax options
df['sales'].agg(['sum', 'mean']) uses df['sales'].agg(['sum', 'mean']), which is correct. Others have wrong argument order or structure.
Final Answer:
df['sales'].agg(['sum', 'mean']) -> Option A
Quick Check:
Multiple functions in list inside agg() [OK]
Hint: Use a list of functions inside agg() for multiple aggregations [OK]
Common Mistakes:
Passing multiple functions as separate arguments
Using dict without proper key-value pairs
Wrong argument order in agg()
3. Given the DataFrame:
import pandas as pd
data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data)
result = df.agg({'A': ['sum', 'max'], 'B': ['min', 'mean']})
print(result)
What is the output of print(result)?
medium
A. A B
sum 10.0 NaN
max 4.0 NaN
min NaN 5.0
mean NaN 6.5
B. A B
sum 10 5
max 4 8
min 1 5
mean 2.5 6.5
C. A B
sum 10 26
max 4 8
min NaN NaN
mean NaN NaN
D. A B
sum 10 5
max 4 7
min 5 6.5
mean 2.5 6.5
Solution
Step 1: Calculate aggregations for column 'A'
Sum of A = 1+2+3+4 = 10, Max of A = 4.
Step 2: Calculate aggregations for column 'B'
Min of B = 5, Mean of B = (5+6+7+8)/4 = 6.5.
Step 3: Understand agg() output format
Output is a DataFrame with aggregation functions as index and columns as 'A' and 'B'. For functions not applied to a column, NaN appears.
Final Answer:
A B
sum 10.0 NaN
max 4.0 NaN
min NaN 5.0
mean NaN 6.5 -> Option A
Quick Check:
agg() with dict of lists returns DataFrame with NaNs for missing aggregations [OK]
Hint: Calculate each agg function separately, then check output shape [OK]
Common Mistakes:
Mixing up min and mean values
Confusing rows and columns in output
Expecting all functions for all columns
4. What is wrong with this code snippet?
df.agg({'col1': 'sum', 'col2': ['mean', 'max']})
Assuming df has columns 'col1' and 'col2'.
medium
A. You cannot mix single function strings and lists in the same agg dictionary.
B. agg() requires all functions to be passed as a list, even if only one.
C. The column names must be passed as a list, not a dictionary.
D. The syntax is correct; no error will occur.
Solution
Step 1: Check if mixing single function and list is allowed in agg()
agg() accepts a dict where values can be a string (single function) or list (multiple functions).
Step 2: Confirm syntax validity
Passing {'col1': 'sum', 'col2': ['mean', 'max']} is valid and works correctly.
Final Answer:
The syntax is correct; no error will occur. -> Option D
Quick Check:
agg() accepts mixed single and multiple functions [OK]
Hint: agg() dict values can be string or list of functions [OK]
Common Mistakes:
Assuming all dict values must be lists
Trying to pass columns as list instead of dict keys
Confusing agg() with apply() syntax
5. You have a DataFrame df with columns 'score' and 'group'. You want to get the mean and standard deviation of 'score' for each 'group'. Which code correctly uses agg() to do this after grouping?
hard
A. df.groupby('group')['score'].agg('mean', 'std')
B. df.groupby('group').agg({'score': ['mean', 'std']})
C. df.agg({'score': ['mean', 'std']}, groupby='group')
D. df.groupby('score')['group'].agg(['mean', 'std'])
Solution
Step 1: Understand grouping and aggregation
To get stats per group, first group by 'group', then aggregate 'score' with mean and std.
Step 2: Check each option
df.groupby('group')['score'].agg('mean', 'std') passes functions as separate arguments, incorrect syntax. df.groupby('group').agg({'score': ['mean', 'std']}) groups by 'group' and applies agg on 'score' column correctly. df.agg({'score': ['mean', 'std']}, groupby='group') has invalid syntax. df.groupby('score')['group'].agg(['mean', 'std']) groups by 'score' which is wrong.
Step 3: Choose best option
df.groupby('group').agg({'score': ['mean', 'std']}) is the correct way to get mean and std of 'score' per 'group'.
Final Answer:
df.groupby('group').agg({'score': ['mean', 'std']}) -> Option B
Quick Check:
Group by then agg with dict for columns [OK]
Hint: Group first, then agg with dict for multiple functions per column [OK]
Common Mistakes:
Grouping by wrong column
Passing groupby as argument to agg()
Aggregating wrong columns
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.