Bird
Raised Fist0
Pandasdata~5 mins

groupby() basics in Pandas

Choose your learning style10 modes available
Introduction

We use groupby() to split data into groups based on some criteria. This helps us analyze each group separately.

You want to find the average sales per store from a sales list.
You need to count how many students are in each class from a school dataset.
You want to sum expenses by category from your budget data.
You want to see the maximum temperature recorded each day from weather data.
Syntax
Pandas
df.groupby('column_name')

This creates groups based on unique values in the specified column.

You usually follow it with an aggregation like .sum(), .mean(), or .count().

Examples
Groups data by 'Category' and sums numeric columns in each group.
Pandas
df.groupby('Category').sum()
Groups data by 'Class' and calculates the average of numeric columns for each class.
Pandas
df.groupby('Class').mean()
Groups data by 'Store' and counts the number of rows in each group.
Pandas
df.groupby('Store').count()
Sample Program

This code creates a small table of sales by store. Then it groups the data by 'Store' and sums the sales for each store. Finally, it prints the total sales per store.

Pandas
import pandas as pd

data = {'Store': ['A', 'B', 'A', 'B', 'C'],
        'Sales': [100, 200, 150, 300, 250]}
df = pd.DataFrame(data)

grouped = df.groupby('Store').sum()
print(grouped)
OutputSuccess
Important Notes

Grouping does not change the original data unless you assign or print the result.

You can group by multiple columns by passing a list, like df.groupby(['Col1', 'Col2']).

Summary

groupby() splits data into groups based on column values.

Use aggregation functions like sum(), mean(), or count() after grouping.

This helps analyze parts of data separately and find patterns.

Practice

(1/5)
1. What does the groupby() function do in pandas?
easy
A. It splits the data into groups based on column values.
B. It sorts the data in ascending order.
C. It removes duplicate rows from the data.
D. It changes the data type of columns.

Solution

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

    The groupby() function is used to split data into groups based on the values in one or more columns.
  2. Step 2: Compare with other options

    Sorting, removing duplicates, and changing data types are different operations and not what groupby() does.
  3. Final Answer:

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

    groupby() = split data into groups [OK]
Hint: Remember: groupby splits data by column values [OK]
Common Mistakes:
  • Confusing groupby with sorting
  • Thinking groupby removes duplicates
  • Assuming groupby changes data types
2. Which of the following is the correct syntax to group a DataFrame df by the column 'Category'?
easy
A. df.group_by('Category')
B. df.groupby['Category']
C. df.groupby('Category')
D. df.groupby(Category)

Solution

  1. Step 1: Recall the correct method name and syntax

    The correct method is groupby() called with parentheses and the column name as a string argument.
  2. Step 2: Check each option

    df.groupby('Category') uses df.groupby('Category') which is correct. df.group_by('Category') uses wrong method name group_by. df.groupby['Category'] uses square brackets instead of parentheses. df.groupby(Category) misses quotes around the column name.
  3. Final Answer:

    df.groupby('Category') -> Option C
  4. Quick Check:

    Correct syntax uses parentheses and string column name [OK]
Hint: Use df.groupby('column_name') with parentheses and quotes [OK]
Common Mistakes:
  • Using wrong method name like group_by
  • Using square brackets instead of parentheses
  • Not quoting the column name string
3. Given the DataFrame:
import pandas as pd
data = {'Team': ['A', 'A', 'B', 'B', 'C'], 'Points': [10, 15, 10, 5, 20]}
df = pd.DataFrame(data)
result = df.groupby('Team').sum()

What is the output of result?
medium
A. Team Points A 25 B 15 C 20
B. {'Team': ['A', 'B', 'C'], 'Points': [25, 15, 20]}
C. Team Points A 10 B 10 C 20
D. Team Points A 15 B 5 C 20

Solution

  1. Step 1: Group data by 'Team'

    The groups are: A with points 10 and 15, B with points 10 and 5, C with points 20.
  2. Step 2: Sum points in each group

    Sum for A = 10 + 15 = 25, B = 10 + 5 = 15, C = 20.
  3. Final Answer:

    Team Points A 25 B 15 C 20 -> Option A
  4. Quick Check:

    Sum points per team = 25, 15, 20 [OK]
Hint: Sum points after groupby to get totals per group [OK]
Common Mistakes:
  • Not summing points, just taking first value
  • Mixing up group sums
  • Confusing output format
4. What is wrong with this code snippet?
df = pd.DataFrame({'City': ['X', 'Y', 'X'], 'Sales': [100, 200, 150]})
result = df.groupby.City.sum()
medium
A. DataFrame is missing import statement.
B. The column name 'City' is misspelled.
C. The sum() function cannot be used after groupby.
D. You cannot use dot notation after groupby; it should be parentheses.

Solution

  1. Step 1: Check groupby syntax

    The correct way to group by a column is df.groupby('City') with parentheses and quotes.
  2. Step 2: Identify the error in dot notation

    Using dot notation like df.groupby.City is invalid because groupby is a method, not an attribute.
  3. Final Answer:

    You cannot use dot notation after groupby; it should be parentheses. -> Option D
  4. Quick Check:

    Use parentheses with groupby, not dot notation [OK]
Hint: Always use parentheses with groupby, not dot notation [OK]
Common Mistakes:
  • Using dot notation instead of parentheses
  • Misspelling column names
  • Thinking sum() is invalid after groupby
5. You have a sales DataFrame:
import pandas as pd
data = {'Store': ['A', 'A', 'B', 'B', 'B'], 'Product': ['X', 'Y', 'X', 'Y', 'X'], 'Sales': [100, 150, 200, 250, 300]}
df = pd.DataFrame(data)

How do you find the total sales for each store and product combination?
hard
A. df.groupby('Product').sum('Store')
B. df.groupby(['Store', 'Product']).sum()
C. df.groupby('Store').sum('Product')
D. df.groupby(['Store']).sum(['Product'])

Solution

  1. Step 1: Understand grouping by multiple columns

    To group by both 'Store' and 'Product', pass a list of column names to groupby().
  2. Step 2: Use sum() to aggregate sales

    After grouping, use sum() to add sales values for each group.
  3. Final Answer:

    df.groupby(['Store', 'Product']).sum() -> Option B
  4. Quick Check:

    Group by multiple columns using list, then sum [OK]
Hint: Group by list of columns for multi-level grouping [OK]
Common Mistakes:
  • Passing column names to sum() instead of groupby()
  • Grouping by single column only
  • Using wrong syntax for groupby
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