📖 Scenario: You work in a small shop that sells three products. Every day, you record how many units of each product you sell. Now, you want to analyze this sales data to find out which products sold more than a certain number of units.
🎯 Goal: Build a simple program that stores daily sales data in a dictionary, sets a sales threshold, finds products that sold more than the threshold, and prints those products with their sales.
📋 What You'll Learn
Create a dictionary called sales with exact product names and sales numbers
Create a variable called threshold to set the minimum sales number
Use a dictionary comprehension to find products with sales greater than threshold
Print the resulting dictionary of filtered products and their sales
💡 Why This Matters
🌍 Real World
Analyzing sales data helps businesses understand which products are popular and make better stock decisions.
💼 Career
Data analysts often filter and summarize sales data to create reports and support business decisions.
Progress0 / 4 steps
1
Create the sales data dictionary
Create a dictionary called sales with these exact entries: 'Apples': 120, 'Bananas': 90, 'Cherries': 150, 'Dates': 60, 'Elderberries': 30.
Data Analysis Python
Hint
Use curly braces {} to create a dictionary. Separate keys and values with a colon :. Separate items with commas.
2
Set the sales threshold
Create a variable called threshold and set it to 80.
Data Analysis Python
Hint
Just assign the number 80 to a variable named threshold.
3
Filter products with sales above threshold
Use a dictionary comprehension to create a new dictionary called top_sellers that contains only products from sales with sales greater than threshold. Use for product, count in sales.items() in your comprehension.
Data Analysis Python
Hint
Use the syntax {key: value for key, value in dict.items() if condition} to filter dictionary items.
4
Print the filtered top sellers
Print the top_sellers dictionary.
Data Analysis Python
Hint
Use print(top_sellers) to display the filtered dictionary.
Practice
(1/5)
1. What is the main purpose of using groupby() in sales data analysis?
easy
A. To sort sales data alphabetically
B. To delete duplicate sales records
C. To visualize sales trends with charts
D. To summarize sales data by categories like product or date
Solution
Step 1: Understand the role of groupby()
The groupby() function groups data based on one or more columns, such as product or date.
Step 2: Identify its use in sales data
Grouping allows us to summarize sales, like total sales per product or per month.
Final Answer:
To summarize sales data by categories like product or date -> Option D
Quick Check:
groupby() groups data for summary [OK]
Hint: Remember: groupby groups data to summarize by categories [OK]
Common Mistakes:
Thinking groupby deletes data
Confusing groupby with sorting
Assuming groupby creates charts
2. Which of the following is the correct syntax to calculate total sales per product using pandas?
easy
A. df['sales'].groupby('product').sum()
B. df.groupby('product')['sales'].sum()
C. df.sum('sales').groupby('product')
D. df.groupby('sales')['product'].sum()
Solution
Step 1: Understand pandas groupby syntax
The correct syntax groups by 'product' column, then sums the 'sales' column.
Step 2: Check each option
df.groupby('product')['sales'].sum() correctly uses df.groupby('product')['sales'].sum(). Others misuse order or columns.
Final Answer:
df.groupby('product')['sales'].sum() -> Option B
Quick Check:
Group by product, then sum sales [OK]
Hint: Group first, then select column and sum [OK]
Common Mistakes:
Calling sum() before groupby()
Grouping by sales instead of product
Selecting columns after sum()
3. Given the DataFrame df below, what is the output of df.groupby('product')['sales'].sum()?
product sales
0 A 100
1 B 200
2 A 150
3 B 100
4 C 300
medium
A. product\nA 250\nB 300\nC 300\nName: sales, dtype: int64
B. product\nA 100\nB 200\nC 300\nName: sales, dtype: int64
C. product\nA 150\nB 100\nC 300\nName: sales, dtype: int64
D. product\nA 350\nB 300\nC 300\nName: sales, dtype: int64
Solution
Step 1: Group sales by product
Sum sales for each product: A = 100+150=250, B = 200+100=300, C = 300.
Step 2: Write the output as pandas Series
The result shows sums indexed by product with name 'sales'.
Final Answer:
product\nA 250\nB 300\nC 300\nName: sales, dtype: int64 -> Option A
Quick Check:
Sum sales per product = 250, 300, 300 [OK]
Hint: Add sales values grouped by product [OK]
Common Mistakes:
Adding sales incorrectly
Confusing product labels
Ignoring grouping before sum
4. The following code is intended to find the average sales per month, but it raises an error. What is the error?
df.groupby('month').mean('sales')
medium
A. mean() does not take any arguments; column selection must be before mean()
B. groupby() requires a list, not a string
C. mean() should be replaced with sum()
D. The DataFrame must be sorted before groupby()
Solution
Step 1: Check mean() function usage
The mean() method does not accept column names as arguments.
Step 2: Correct usage for column selection
Select the 'sales' column before calling mean(): df.groupby('month')['sales'].mean().
Final Answer:
mean() does not take any arguments; column selection must be before mean() -> Option A
Quick Check:
mean() no args; select column first [OK]
Hint: Select column before aggregation function [OK]
Common Mistakes:
Passing column name inside mean()
Using groupby with wrong argument type
Thinking sorting is required before groupby
5. You have sales data with columns product, month, and sales. How do you find the top-selling product for each month?
hard
A. Use df.groupby('month')['sales'].max() without product info
B. Use df.groupby('product')['sales'].max() and sort by month
C. Use df.groupby(['month', 'product'])['sales'].sum().unstack().idxmax(axis=1)
D. Use df.sort_values('sales').groupby('month').first() without aggregation
Solution
Step 1: Group sales by month and product
Sum sales for each product in each month using groupby(['month', 'product'])['sales'].sum().
Step 2: Reshape and find top product per month
Use unstack() to make products columns, then idxmax(axis=1) to find product with max sales per month.
Final Answer:
Use df.groupby(['month', 'product'])['sales'].sum().unstack().idxmax(axis=1) -> Option C
Quick Check:
Group by month and product, then find max product [OK]
Hint: Group by month and product, then find max sales product [OK]
Common Mistakes:
Ignoring product when finding max sales
Using max() without grouping by product
Sorting without aggregation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.