pivot_table() to summarize total sales by city and productpivot_table() for summarization in Pandas - Mini Project: Build & Apply
pd and create a DataFrame called sales_data with these exact columns and rows:City: 'New York', 'New York', 'Los Angeles', 'Los Angeles', 'Chicago', 'Chicago'Product: 'Apples', 'Bananas', 'Apples', 'Bananas', 'Apples', 'Bananas'Sales: 100, 150, 200, 250, 300, 350Use pd.DataFrame() with a dictionary of lists for columns.
pivot_config as a dictionary with keys:index set to 'City',columns set to 'Product',and
values set to 'Sales'.Use a dictionary with keys exactly as 'index', 'columns', and 'values'.
pd.pivot_table() with sales_data and the pivot_config dictionary unpacked to create a variable called summary_table.Use pd.pivot_table(data, **config) to unpack the dictionary.
summary_table variable to show the total sales by city and product.Use print(summary_table) to display the pivot table.
Practice
What does the pivot_table() function in pandas primarily do?
Solution
Step 1: Understand the purpose of pivot_table()
The pivot_table() function groups data by specified rows and columns and calculates summary statistics like mean, sum, or count.Step 2: Compare with other options
Sorting, filtering, and merging are different pandas operations, not the main purpose of pivot_table().Final Answer:
It summarizes data by grouping rows and columns and calculating statistics. -> Option CQuick Check:
pivot_table() = summary by groups [OK]
- Confusing pivot_table with sorting or filtering
- Thinking pivot_table merges dataframes
- Assuming pivot_table only reshapes data without aggregation
Which of the following is the correct syntax to create a pivot table that calculates the mean of column 'Sales' grouped by 'Region'?
import pandas as pd
df = pd.DataFrame({
'Region': ['East', 'West', 'East', 'West'],
'Sales': [100, 200, 150, 300]
})
# Which line is correct?Solution
Step 1: Identify grouping and aggregation
We want to group by 'Region' (index) and calculate mean of 'Sales' (values) using aggfunc='mean'.Step 2: Check each option
pd.pivot_table(df, index='Region', values='Sales', aggfunc='mean') matches the requirement exactly. Options B, C, and D either swap index and values or use wrong aggfunc.Final Answer:
pd.pivot_table(df, index='Region', values='Sales', aggfunc='mean') -> Option AQuick Check:
Group by Region, mean Sales = pd.pivot_table(df, index='Region', values='Sales', aggfunc='mean') [OK]
- Swapping index and values parameters
- Using wrong aggregation function
- Confusing columns parameter with index
Given the following code, what is the output?
import pandas as pd
df = pd.DataFrame({
'Category': ['A', 'A', 'B', 'B'],
'Type': ['X', 'Y', 'X', 'Y'],
'Value': [10, 20, 30, 40]
})
pivot = pd.pivot_table(df, index='Category', columns='Type', values='Value', aggfunc='sum')
print(pivot)Solution
Step 1: Understand pivot_table parameters
Grouping by 'Category' as rows, 'Type' as columns, summing 'Value'.Step 2: Calculate sums for each group
For Category A and Type X: 10, Type Y: 20; For B and X: 30, Y: 40.Final Answer:
Type X Y Category A 10.0 20.0 B 30.0 40.0 -> Option BQuick Check:
Sum by Category and Type = Type X Y Category A 10.0 20.0 B 30.0 40.0 [OK]
- Mixing up rows and columns in output
- Confusing sum with mean aggregation
- Ignoring float formatting in output
What is wrong with this pivot_table code?
import pandas as pd
df = pd.DataFrame({
'Group': ['G1', 'G1', 'G2'],
'Score': [5, 10, 15]
})
pivot = pd.pivot_table(df, index='Group', values='Score', aggfunc='average')
print(pivot)Solution
Step 1: Check aggfunc parameter
The aggfunc parameter must be a valid aggregation function like 'mean', 'sum', or 'count'. 'average' is not recognized by pandas.Step 2: Verify other parameters
Index='Group' and values='Score' are correct for grouping and aggregation.Final Answer:
The aggfunc 'average' is invalid; should be 'mean'. -> Option AQuick Check:
aggfunc='mean' not 'average' [OK]
- Using 'average' instead of 'mean' in aggfunc
- Swapping index and values parameters
- Assuming aggfunc accepts any descriptive name
You have a sales dataset with columns 'Store', 'Product', and 'Revenue'. You want to create a pivot table that shows the total revenue for each store and product combination, but if a combination is missing, it should show 0 instead of NaN. Which code correctly achieves this?
Solution
Step 1: Identify grouping and aggregation
We want total revenue (sum) grouped by Store (rows) and Product (columns).Step 2: Handle missing combinations
Use fill_value=0 in pivot_table to replace NaN with 0 for missing pairs.Step 3: Check each option
pd.pivot_table(df, index='Store', columns='Product', values='Revenue', aggfunc='sum', fill_value=0) uses correct index, columns, aggfunc, and fill_value=0. pd.pivot_table(df, index='Store', columns='Product', values='Revenue', aggfunc='sum').fillna('0') fills NaN after pivot but with string '0' (wrong type). pd.pivot_table(df, index='Store', columns='Product', values='Revenue', aggfunc='mean', fill_value=0) uses mean instead of sum. pd.pivot_table(df, index='Product', columns='Store', values='Revenue', aggfunc='sum', fill_value=null) swaps index and columns and fill_value=null.Final Answer:
pd.pivot_table(df, index='Store', columns='Product', values='Revenue', aggfunc='sum', fill_value=0) -> Option DQuick Check:
sum + fill_value=0 for missing = pd.pivot_table(df, index='Store', columns='Product', values='Revenue', aggfunc='sum', fill_value=0) [OK]
- Using fillna('0') which creates string values
- Using mean instead of sum for total revenue
- Swapping index and columns parameters
Ready to prove it?
Pass the test and this pattern moves unknown
