Neural Mastery
← Practice
Pandas GroupBy Metric Aggregationeasy

Pandas GroupBy Metric Aggregation

easy NumPy & Data Wrangling 10–15 min

NumPy allowed · plain Python earns 10 bonus points

Linear algebra step 1/4

A vector transforms

Matrix multiplication is the first computation behind every model.
Open lesson →
01vector
02matrix
03transform
04result
[2, −1] × [[1, 2], [−.5, 1]] = [0, −2]

Computed matrix × vector transformation

Group tabular records by category and compute aggregate metrics (count, sum, mean) using Pandas.

Task

Implement groupby_aggregate(records, group_col, val_col). Given tabular rows, group by group_col and compute for each group its count (int), sum (float rounded to 2 decimals), and mean (float rounded to 2 decimals). Return a dictionary mapping group names to their metric dict.

Function Signature

groupby_aggregate(records: list[dict], group_col: str, val_col: str) -> dict

Examples

Example 1: Regional Sales Aggregation
Input: records = [{'region': 'East', 'sales': 100}, {'region': 'West', 'sales': 200}, {'region': 'East', 'sales': 150}] group_col = 'region' val_col = 'sales'
Output: {'East': {'count': 2, 'sum': 250, 'mean': 125}, 'West': {'count': 1, 'sum': 200, 'mean': 200}}
Example 2: Logins by Role
Input: records = [{'role': 'admin', 'logins': 5}, {'role': 'user', 'logins': 2}, {'role': 'user', 'logins': 4}] group_col = 'role' val_col = 'logins'
Output: {'admin': {'count': 1, 'sum': 5, 'mean': 5}, 'user': {'count': 2, 'sum': 6, 'mean': 3}}

Constraints

  • records is a list of dictionaries.
  • group_col and val_col exist in all records.
  • val_col values are numeric.
  • Returns empty dict {} for empty records.
Python3Saved ✓
import pandas as pd

def groupby_aggregate(records: list[dict], group_col: str, val_col: str) -> dict:
"""Group records by group_col and compute count, sum, and mean for val_col.
Round sum and mean to 2 decimal places.
Return a dictionary mapping each group name (str) to:
{'count': int, 'sum': float, 'mean': float}"""
# Your implementation here
pass

Case 1: Regional Sales Aggregation
Input: records = [{'region': 'East', 'sales': 100}, {'region': 'West', 'sales': 200}, {'region': 'East', 'sales': 150}] group_col = 'region' val_col = 'sales'
Expected: {'East': {'count': 2, 'sum': 250, 'mean': 125}, 'West': {'count': 1, 'sum': 200, 'mean': 200}}
Case 2: Logins by Role
Input: records = [{'role': 'admin', 'logins': 5}, {'role': 'user', 'logins': 2}, {'role': 'user', 'logins': 4}] group_col = 'role' val_col = 'logins'
Expected: {'admin': {'count': 1, 'sum': 5, 'mean': 5}, 'user': {'count': 2, 'sum': 6, 'mean': 3}}