Bird
Raised Fist0
Pandasdata~10 mins

Multiple aggregation functions in Pandas - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Multiple aggregation functions
Start with DataFrame
↓
Choose column(s) to aggregate
↓
Apply multiple aggregation functions
↓
Get aggregated results for each function
↓
Combine results into one DataFrame or Series
↓
Use or display aggregated output
We start with data, select columns, apply several aggregation functions at once, and get combined results.
Execution Sample
Pandas
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]})
result = df.agg({'A': ['sum', 'mean'], 'B': ['min', 'max']})
print(result)
This code applies sum and mean to column A, min and max to column B, and prints the combined results.
Execution Table
StepActionColumnAggregation FunctionResult
1Select column 'A'A-[1, 2, 3, 4]
2Select column 'B'B-[5, 6, 7, 8]
3Apply 'sum' to 'A'Asum10
4Apply 'mean' to 'A'Amean2.5
5Apply 'min' to 'B'Bmin5
6Apply 'max' to 'B'Bmax8
7Combine all resultsA, Bsum, mean, min, maxDataFrame with results
8Print result-- A B sum 10.0 NaN mean 2.5 NaN min NaN 5.0 max NaN 8.0
💡 All specified aggregation functions applied and results combined into one output.
Variable Tracker
VariableStartAfter Step 3After Step 4After Step 5After Step 6Final
df{'A':[1,2,3,4],'B':[5,6,7,8]}SameSameSameSameSame
resultNonePartial sum for A=10Sum and mean for A=10,2.5Sum, mean A; min B=5Sum, mean A; min, max B=5,8Full DataFrame with all aggregations
Key Moments - 2 Insights
Why do some cells in the result DataFrame show NaN?
Because each aggregation function applies only to specified columns, other columns have no value for that function, so pandas fills with NaN (see execution_table rows 7 and 8).
Can we apply different aggregation functions to different columns at once?
Yes, by passing a dictionary to agg() with column names as keys and list of functions as values, as shown in the code and execution_table steps 3-6.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table at step 4. What is the mean of column 'A'?
A10
B3
C2.5
DNaN
💡 Hint
Check the 'Result' column at step 4 in the execution_table.
At which step is the minimum value of column 'B' calculated?
AStep 3
BStep 5
CStep 6
DStep 7
💡 Hint
Look for 'min' aggregation on column 'B' in the execution_table.
If we add 'max' aggregation to column 'A', how will the final result change?
AA new row with max value for 'A' will appear
BThe 'max' value will replace the 'sum' value for 'A'
CNo change, max is ignored
DThe entire result will be empty
💡 Hint
Adding an aggregation function adds a new row for that function in the result (see execution_table step 7).
Concept Snapshot
Use df.agg() to apply multiple aggregation functions at once.
Pass a dict: keys are columns, values are list of functions.
Result is a DataFrame with functions as rows, columns as columns.
NaN appears where function doesn't apply to a column.
Useful for quick summary stats on multiple columns.
Full Transcript
We start with a DataFrame containing columns A and B. We want to apply multiple aggregation functions to these columns at once. We select columns A and B, then apply sum and mean to A, and min and max to B using the agg() method with a dictionary. Each function is applied step-by-step, producing partial results. These results are combined into one DataFrame where rows represent aggregation functions and columns represent original columns. Some cells show NaN because not all functions apply to all columns. This combined output is printed as the final result. This method helps quickly get multiple summary statistics in one call.

Practice

(1/5)
1. What does the agg() function do when used after groupby() in pandas?
easy
A. It merges two DataFrames together.
B. It sorts the groups in ascending order.
C. It filters rows based on a condition.
D. It applies multiple aggregation functions to each group and returns their results.

Solution

  1. Step 1: Understand groupby operation

    The groupby() function splits data into groups based on column values.
  2. Step 2: Apply agg() after grouping

    The agg() function applies one or more aggregation functions like sum, mean, count to each group and returns the results.
  3. Final Answer:

    It applies multiple aggregation functions to each group and returns their results. -> Option D
  4. Quick Check:

    agg() summarizes groups [OK]
Hint: Remember: agg() summarizes groups with many functions [OK]
Common Mistakes:
  • Thinking agg() sorts data
  • Confusing agg() with filtering
  • Assuming agg() merges DataFrames
2. Which of the following is the correct syntax to apply both sum and mean aggregations on a grouped DataFrame df grouped by column 'Category'?
easy
A. df.groupby('Category').agg(['sum', 'mean'])
B. df.agg(['sum', 'mean']).groupby('Category')
C. df.groupby('Category').agg('sum', 'mean')
D. df.groupby('Category').aggregate(sum, mean)

Solution

  1. Step 1: Identify correct method chaining

    Grouping must happen first with groupby('Category'), then aggregation with agg().
  2. Step 2: Use list of functions inside agg()

    The correct syntax uses a list of function names: agg(['sum', 'mean']).
  3. Final Answer:

    df.groupby('Category').agg(['sum', 'mean']) -> Option A
  4. Quick Check:

    Group first, then agg with list [OK]
Hint: Use list inside agg() after groupby() [OK]
Common Mistakes:
  • Calling agg() before groupby()
  • Passing multiple args instead of list to agg()
  • Using aggregate() without list syntax
3. Given the DataFrame:
import pandas as pd
data = {'Team': ['A', 'A', 'B', 'B'], 'Points': [10, 15, 10, 20], 'Assists': [5, 7, 8, 6]}
df = pd.DataFrame(data)
result = df.groupby('Team').agg({'Points': ['sum', 'mean'], 'Assists': 'max'})
print(result)

What is the output?
medium
A. A DataFrame with sum and mean of Points and max of Assists for each Team.
B. A DataFrame with sum and mean of Assists and max of Points for each Team.
C. An error because agg() cannot mix list and string in dict.
D. A Series with aggregated values for all columns combined.

Solution

  1. Step 1: Group by 'Team'

    The data is grouped into two groups: Team A and Team B.
  2. Step 2: Apply multiple aggregations

    For 'Points', sum and mean are calculated; for 'Assists', max is calculated for each group.
  3. Final Answer:

    A DataFrame with sum and mean of Points and max of Assists for each Team. -> Option A
  4. Quick Check:

    agg() supports dict with list and string [OK]
Hint: Use dict with list/string in agg() for different columns [OK]
Common Mistakes:
  • Expecting error mixing list and string in agg dict
  • Confusing which function applies to which column
  • Thinking output is a Series, not DataFrame
4. What is wrong with this code snippet?
df.groupby('Category').agg({'Sales': 'sum', 'Profit': ['mean', 'max']})

It raises an error. Why?
medium
A. agg() does not accept multiple functions for different columns.
B. The column names 'Sales' and 'Profit' must be passed as a list, not dict.
C. The code is correct and runs without error.
D. The dictionary mixes single string and list of functions for different columns, which is invalid.

Solution

  1. Step 1: Check agg() dictionary syntax

    agg() accepts a dictionary where values can be a string or list of functions per column.
  2. Step 2: Verify code correctness

    The code correctly applies 'sum' to 'Sales' and ['mean', 'max'] to 'Profit' without error.
  3. Final Answer:

    The code is correct and runs without error. -> Option C
  4. Quick Check:

    agg() accepts mixed string and list in dict [OK]
Hint: agg() allows string or list per column in dict [OK]
Common Mistakes:
  • Thinking mixing string and list causes error
  • Expecting all functions must be in a list
  • Confusing agg() with apply() syntax
5. You have a DataFrame df with columns 'Store', 'Sales', and 'Expenses'. You want to group by 'Store' and get the total sales, average expenses, and count of sales entries per store in one step. Which code correctly does this?
hard
A. df.groupby('Store').agg({'Sales': 'sum', 'Expenses': ['mean', 'count']})
B. df.groupby('Store').agg({'Sales': ['sum', 'count'], 'Expenses': 'mean'})
C. df.groupby('Store').agg({'Sales': 'mean', 'Expenses': 'sum', 'Store': 'count'})
D. df.groupby('Store').agg(['sum', 'mean', 'count'])

Solution

  1. Step 1: Identify required aggregations per column

    We want total sales (sum), average expenses (mean), and count of sales entries (count).
  2. Step 2: Map functions correctly in agg()

    Use a dict: 'Sales' gets ['sum', 'count'], 'Expenses' gets 'mean'. This matches df.groupby('Store').agg({'Sales': ['sum', 'count'], 'Expenses': 'mean'}).
  3. Final Answer:

    df.groupby('Store').agg({'Sales': ['sum', 'count'], 'Expenses': 'mean'}) -> Option B
  4. Quick Check:

    Dict with list and string per column [OK]
Hint: Use dict with list for multiple funcs per column [OK]
Common Mistakes:
  • Putting count under wrong column
  • Using agg() without dict for columns
  • Applying all functions to all columns
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