Bird
Raised Fist0
Pandasdata~10 mins

Aggregation with agg() in Pandas - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Aggregation with agg()
Start with DataFrame
↓
Call agg() with functions
↓
Apply each function to columns
↓
Combine results into new DataFrame
↓
Return aggregated DataFrame
The agg() method applies one or more aggregation functions to DataFrame columns and returns a new DataFrame with the results.
Execution Sample
Pandas
import pandas as pd

df = pd.DataFrame({
  'A': [1, 2, 3],
  'B': [4, 5, 6]
})

result = df.agg(['sum', 'mean'])
This code creates a DataFrame and uses agg() to calculate sum and mean for each column.
Execution Table
StepActionColumnFunctionResultIntermediate Output
1Start with DataFrameA, B--{'A': [1,2,3], 'B': [4,5,6]}
2Apply 'sum' to column AAsum6{'sum': {'A': 6}}
3Apply 'sum' to column BBsum15{'sum': {'A': 6, 'B': 15}}
4Apply 'mean' to column AAmean2.0{'sum': {'A': 6, 'B': 15}, 'mean': {'A': 2.0}}
5Apply 'mean' to column BBmean5.0{'sum': {'A': 6, 'B': 15}, 'mean': {'A': 2.0, 'B': 5.0}}
6Combine results into DataFrame---DataFrame with rows 'sum' and 'mean', columns 'A' and 'B'
7Return aggregated DataFrame--- A B sum 6 15 mean 2.0 5.0
💡 All specified aggregation functions applied to all columns; aggregation complete.
Variable Tracker
VariableStartAfter Step 2After Step 4Final
df{'A': [1,2,3], 'B': [4,5,6]}{'A': [1,2,3], 'B': [4,5,6]}{'A': [1,2,3], 'B': [4,5,6]}{'A': [1,2,3], 'B': [4,5,6]}
resultNone{'sum': {'A': 6}}{'sum': {'A': 6, 'B': 15}, 'mean': {'A': 2.0}}DataFrame with sum and mean rows
Key Moments - 2 Insights
Why does agg() return a DataFrame with function names as row labels?
Because agg() applies each function to all columns and combines results, it labels rows by function names to show which result belongs to which aggregation (see execution_table rows 6 and 7).
Can agg() apply different functions to different columns at once?
Yes, but in this example we used the same functions for all columns. To apply different functions per column, you pass a dictionary to agg(), which is not shown here.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what is the sum of column B?
A15
B5.0
C6
D4
💡 Hint
Check the 'Result' column in execution_table row 3 for sum of column B.
At which step does the mean of column A get calculated?
AStep 2
BStep 4
CStep 5
DStep 6
💡 Hint
Look at the 'Function' column in execution_table to find when 'mean' is applied to column A.
If we add 'max' to the agg() functions, how would the execution_table change?
ANo change, max is ignored
BFewer rows because max replaces sum
CMore rows for steps applying 'max' to each column
DThe DataFrame would have fewer columns
💡 Hint
Adding a function means agg() applies it to all columns, adding steps for each.
Concept Snapshot
agg() method in pandas:
- Applies one or more aggregation functions to DataFrame columns
- Syntax: df.agg(['func1', 'func2']) or df.agg({'col1': 'func1', 'col2': 'func2'})
- Returns a DataFrame with functions as row labels and columns as original columns
- Useful for quick summary statistics
- Supports built-in and custom aggregation functions
Full Transcript
This visual execution trace shows how pandas agg() method works on a DataFrame. Starting with a DataFrame with columns A and B, agg() applies the functions 'sum' and 'mean' to each column. Step by step, it calculates sum for A and B, then mean for A and B, storing results in an intermediate dictionary. Finally, it combines these results into a new DataFrame with rows labeled by function names and columns by original column names. Variables df and result are tracked through the steps. Key moments clarify why agg() returns a DataFrame with function names as rows and that different functions can be applied per column. The quiz tests understanding of specific steps and effects of adding functions. The snapshot summarizes agg() usage and behavior.

Practice

(1/5)
1.

What does the agg() function do in pandas?

easy
A. It sorts the DataFrame rows by index.
B. It applies one or more aggregation functions to DataFrame columns.
C. It filters rows based on a condition.
D. It merges two DataFrames together.

Solution

  1. Step 1: Understand the purpose of agg()

    The agg() function is used to apply aggregation functions like sum, mean, count, etc., to DataFrame columns.
  2. Step 2: Compare with other options

    Sorting, filtering, and merging are done by other pandas functions, not agg().
  3. Final Answer:

    It applies one or more aggregation functions to DataFrame columns. -> Option B
  4. Quick Check:

    agg() = aggregation [OK]
Hint: Remember agg() means aggregate functions on columns [OK]
Common Mistakes:
  • Confusing agg() with sorting or filtering functions
  • Thinking agg() modifies row order
  • Assuming agg() merges DataFrames
2.

Which of the following is the correct syntax to apply agg() with multiple functions on a DataFrame df?

df.agg({'col1': ['sum', 'mean'], 'col2': ['min', 'max']})
easy
A. df.agg({'col1': ['sum', 'mean'], 'col2': ['min', 'max']})
B. df.aggregate(['sum', 'mean'], ['min', 'max'])
C. df.agg(['col1': 'sum', 'col2': 'min'])
D. df.agg({'sum', 'mean', 'min', 'max'})

Solution

  1. Step 1: Review correct agg() syntax

    The correct syntax uses a dictionary mapping column names to lists of functions: {'col1': ['sum', 'mean'], 'col2': ['min', 'max']}.
  2. Step 2: Check each option

    df.agg({'col1': ['sum', 'mean'], 'col2': ['min', 'max']}) matches the correct syntax. Options A, B, and D have syntax errors or wrong argument formats.
  3. Final Answer:

    df.agg({'col1': ['sum', 'mean'], 'col2': ['min', 'max']}) -> Option A
  4. Quick Check:

    Dictionary with column keys and function lists = df.agg({'col1': ['sum', 'mean'], 'col2': ['min', 'max']}) [OK]
Hint: Use dict with columns as keys and list of funcs as values [OK]
Common Mistakes:
  • Passing functions as separate arguments instead of dict
  • Using sets {} instead of dict for agg()
  • Incorrect list or dict syntax inside agg()
3.

Given the DataFrame:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = df.agg({'A': ['sum', 'max'], 'B': ['sum', 'max']})
print(result)

What is the output?

medium
A. A B sum 6 15 max 3 6
B. A B sum 6 4 max 3 4
C. A B sum 6 5 max 3 6
D. A B sum 6 5 max 3 4

Solution

  1. Step 1: Calculate aggregation for column 'A'

    Sum of [1, 2, 3] is 6; max is 3.
  2. Step 2: Calculate aggregation for column 'B'

    Sum of [4, 5, 6] is 15; max is 6.
  3. Final Answer:

    A B sum 6 15 max 3 6 -> Option A
  4. Quick Check:

    Sum A=6, Max A=3, Sum B=15, Max B=6 [OK]
Hint: Apply each function only to specified columns [OK]
Common Mistakes:
  • Assuming max applies to column B
  • Mixing up min and max values
  • Confusing row and column labels in output
4.

What is wrong with this code snippet?

import pandas as pd
df = pd.DataFrame({'X': [10, 20], 'Y': [30, 40]})
result = df.agg({'X': 'sum', 'Y': ['mean', 'max']})
print(result)
medium
A. Error because 'agg()' requires all functions as strings.
B. Error because 'sum' should be in a list for column 'X'.
C. Error because 'agg()' cannot mix single and multiple functions.
D. No error; code runs and prints correct aggregation.

Solution

  1. Step 1: Check if mixing single and multiple functions is allowed

    In pandas, you can pass a single function as a string or multiple as a list per column in agg().
  2. Step 2: Verify syntax correctness

    Passing 'sum' as a string for 'X' and ['mean', 'max'] for 'Y' is valid syntax.
  3. Final Answer:

    No error; code runs and prints correct aggregation. -> Option D
  4. Quick Check:

    Single or list functions per column both allowed [OK]
Hint: Single function can be string; multiple must be list [OK]
Common Mistakes:
  • Thinking all functions must be lists
  • Assuming mixing single and list causes error
  • Confusing function names with strings vs objects
5.

You have a DataFrame df with columns 'Product', 'Sales', and 'Quantity'. You want to group by 'Product' and get the total sales, average quantity, and maximum sales per product. Which agg() call achieves this?

hard
A. df.groupby('Product').agg({'Sales': ['mean'], 'Quantity': ['sum', 'max']})
B. df.groupby('Product').agg({'Sales': 'mean', 'Quantity': ['sum', 'max']})
C. df.groupby('Product').agg({'Sales': ['sum', 'max'], 'Quantity': 'mean'})
D. df.groupby('Product').agg({'Product': ['sum'], 'Sales': 'max', 'Quantity': 'mean'})

Solution

  1. Step 1: Identify required aggregations per column

    We want total sales (sum), average quantity (mean), and maximum sales (max) grouped by product.
  2. Step 2: Match functions to columns

    For 'Sales', apply 'sum' and 'max'; for 'Quantity', apply 'mean'. Grouping is by 'Product'.
  3. Step 3: Check options

    df.groupby('Product').agg({'Sales': ['sum', 'max'], 'Quantity': 'mean'}) matches the requirements exactly. Others have wrong functions or columns.
  4. Final Answer:

    df.groupby('Product').agg({'Sales': ['sum', 'max'], 'Quantity': 'mean'}) -> Option C
  5. Quick Check:

    Group by Product, Sales sum & max, Quantity mean = df.groupby('Product').agg({'Sales': ['sum', 'max'], 'Quantity': 'mean'}) [OK]
Hint: Map each column to needed functions in a dict inside agg() [OK]
Common Mistakes:
  • Applying wrong functions to columns
  • Including grouping column in agg()
  • Mixing aggregation functions incorrectly
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