Bird
Raised Fist0
Pandasdata~5 mins

GroupBy with custom functions in Pandas - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the groupby() function do in pandas?
It splits the data into groups based on one or more columns, so you can perform operations on each group separately.
Click to reveal answer
beginner
How can you apply a custom function to each group in pandas?
Use the .apply() method after groupby() to run your own function on each group.
Click to reveal answer
intermediate
What is the difference between .agg() and .apply() in groupby?
.agg() is for simple aggregation functions like sum or mean, while .apply() lets you run any custom function on groups.
Click to reveal answer
beginner
Write a simple custom function to calculate the range (max - min) of a group.
def range_func(x): return x.max() - x.min()
Click to reveal answer
intermediate
Why use custom functions with groupby instead of built-in aggregations?
Custom functions let you do special calculations or transformations that built-in functions don’t support.
Click to reveal answer
Which pandas method allows you to run your own function on each group after grouping?
A.transform()
B.group()
C.custom()
D.apply()
What does this custom function do?
def range_func(x):
    return x.max() - x.min()
ACalculates the difference between max and min values in the group
BCalculates the sum of the group
CCalculates the average of the group
DCounts the number of items in the group
Which of these is NOT a reason to use a custom function with groupby?
ATo perform calculations not covered by built-in functions
BTo automatically sort the groups alphabetically
CTo apply multiple aggregations at once
DTo transform data in a special way per group
What will this code do?
df.groupby('Category')['Value'].apply(lambda x: x.sum())
ASum values in 'Value' for each 'Category' group
BSum all values in the 'Value' column ignoring groups
CApply sum to the whole DataFrame
DCreate a new column with sums
Which pandas method is best for simple aggregations like mean or sum after groupby?
A.apply()
B.filter()
C.agg()
D.transform()
Explain how to use a custom function with pandas groupby to calculate a special metric for each group.
Think about splitting data, defining a function, and applying it.
You got /4 concepts.
    Describe the difference between using .agg() and .apply() after grouping data in pandas.
    One is for simple aggregations, the other for flexible custom functions.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the groupby function in pandas primarily do?
      easy
      A. It splits data into groups based on column values for separate analysis.
      B. It sorts the entire DataFrame by column values.
      C. It deletes duplicate rows from the DataFrame.
      D. It merges two DataFrames based on a key column.

      Solution

      1. Step 1: Understand the purpose of groupby

        The groupby function divides data into groups based on unique values in one or more columns.
      2. Step 2: Recognize the use of groups

        After grouping, you can apply functions to each group separately for analysis or aggregation.
      3. Final Answer:

        It splits data into groups based on column values for separate analysis. -> Option A
      4. Quick Check:

        Group data = split by column values [OK]
      Hint: GroupBy splits data into parts by column values [OK]
      Common Mistakes:
      • Confusing groupby with sorting
      • Thinking groupby deletes duplicates
      • Mixing groupby with merge operations
      2. Which of the following is the correct syntax to apply a custom function my_func to each group after grouping by column 'Category' in a DataFrame df?
      easy
      A. df.groupby('Category').apply(my_func)
      B. df.apply.groupby('Category')(my_func)
      C. df.groupby('Category').my_func()
      D. df.group_by('Category').apply(my_func)

      Solution

      1. Step 1: Recall pandas groupby syntax

        The correct method to group by a column is df.groupby('ColumnName').
      2. Step 2: Apply a custom function to groups

        Use .apply(function) after grouping to run the function on each group.
      3. Final Answer:

        df.groupby('Category').apply(my_func) -> Option A
      4. Quick Check:

        groupby + apply(custom function) = df.groupby('Category').apply(my_func) [OK]
      Hint: Use groupby('col').apply(func) to run custom function [OK]
      Common Mistakes:
      • Using wrong method name like group_by
      • Calling function directly on groupby object
      • Misplacing apply before groupby
      3. Given the DataFrame df below:
      import pandas as pd
      data = {'Team': ['A', 'A', 'B', 'B', 'C'], 'Points': [10, 15, 10, 20, 30]}
      df = pd.DataFrame(data)
      
      # Custom function to get range of points in group
      def point_range(x):
          return x.max() - x.min()
      
      result = df.groupby('Team')['Points'].apply(point_range).to_dict()

      What is the value of result?
      medium
      A. {'A': 10, 'B': 10, 'C': 0}
      B. {'A': 25, 'B': 30, 'C': 30}
      C. {'A': 5, 'B': 10, 'C': 0}
      D. {'A': 15, 'B': 20, 'C': 30}

      Solution

      1. Step 1: Group points by 'Team'

        Teams: A has points [10, 15], B has [10, 20], C has [30].
      2. Step 2: Calculate range (max - min) for each group

        For A: 15 - 10 = 5; B: 20 - 10 = 10; C: 30 - 30 = 0.
      3. Final Answer:

        {'A': 5, 'B': 10, 'C': 0} -> Option C
      4. Quick Check:

        Range = max - min per group = {'A': 5, 'B': 10, 'C': 0} [OK]
      Hint: Calculate max-min per group for range [OK]
      Common Mistakes:
      • Confusing sum with range
      • Forgetting single value group range is zero
      • Mixing keys and values in result
      4. Consider this code snippet:
      import pandas as pd
      data = {'Category': ['X', 'X', 'Y'], 'Value': [1, 2, 3]}
      df = pd.DataFrame(data)
      
      # Custom function to sum values
       def sum_values(x):
          return x.sum
      
      result = df.groupby('Category')['Value'].apply(sum_values)

      What is the issue with this code?
      medium
      A. The apply method cannot be used with custom functions.
      B. The groupby syntax is incorrect; it should be groupby(['Category']).
      C. The DataFrame is missing a required index column.
      D. The function sum_values returns the method, not the sum result.

      Solution

      1. Step 1: Check the custom function definition

        The function returns x.sum which is a method, not called (missing parentheses).
      2. Step 2: Understand the effect on apply

        Returning the method itself causes the result to be a method object, not the sum value.
      3. Final Answer:

        The function sum_values returns the method, not the sum result. -> Option D
      4. Quick Check:

        Missing () calls method, not result [OK]
      Hint: Call sum() with parentheses to get result [OK]
      Common Mistakes:
      • Forgetting parentheses on sum()
      • Thinking groupby syntax is wrong here
      • Believing apply can't use custom functions
      5. You have a DataFrame df with columns 'Store', 'Product', and 'Sales'. You want to find the difference between the highest and lowest sales per store, but only for products with sales above 100. Which approach correctly uses groupby with a custom function to achieve this?
      hard
      A. df.groupby('Store')['Sales'].apply(lambda x: x[x > 100].max() - x[x > 100].min())
      B. All of the above produce the same correct result.
      C. df.groupby('Store').apply(lambda g: g[g['Sales'] > 100]['Sales'].max() - g[g['Sales'] > 100]['Sales'].min())
      D. df[df['Sales'] > 100].groupby('Store')['Sales'].apply(lambda x: x.max() - x.min())

      Solution

      1. Step 1: Understand filtering sales above 100

        One approach filters inside the apply lambda on each store's sales series. Another filters the DataFrame before grouping. The third filters inside the group apply on the subgroup DataFrame.
      2. Step 2: Check if all approaches calculate max-min correctly

        All three methods correctly compute the difference of max and min sales above 100 per store.
      3. Step 3: Confirm equivalence of results

        Filtering before or inside groupby leads to the same final result for this case.
      4. Final Answer:

        All of the above produce the same correct result. -> Option B
      5. Quick Check:

        Filtering + groupby + custom function = all correct [OK]
      Hint: Filter before or inside groupby; both work [OK]
      Common Mistakes:
      • Filtering after groupby without apply
      • Not filtering sales > 100 properly
      • Assuming only one method works
      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