📖 Scenario: You work in a small grocery store. You have a table showing the prices of different fruits in different stores. You want to increase all prices by 10% to prepare for a sale.
🎯 Goal: You will create a table of fruit prices, set a price increase rate, use applymap() to increase all prices, and then show the new prices.
📋 What You'll Learn
Create a pandas DataFrame called prices with exact fruit prices for three stores.
Create a variable called increase_rate with the value 1.10.
Use applymap() with a lambda function to multiply each price by increase_rate and save it as new_prices.
Print the new_prices DataFrame.
💡 Why This Matters
🌍 Real World
Stores often need to update prices for all products quickly. Using applymap() helps apply changes to every price in a table easily.
💼 Career
Data analysts and scientists use pandas and applymap() to clean and transform data tables efficiently.
Progress0 / 4 steps
1
Create the fruit prices DataFrame
Create a pandas DataFrame called prices with these exact values: columns are 'Store A', 'Store B', 'Store C'; index is 'Apple', 'Banana', 'Cherry'. The prices are: Store A: 1.00, 0.50, 3.00 Store B: 1.20, 0.45, 2.80 Store C: 0.95, 0.55, 3.10
Pandas
Hint
Use pd.DataFrame with a dictionary for columns and a list for the index.
2
Set the price increase rate
Create a variable called increase_rate and set it to 1.10 to represent a 10% price increase.
Pandas
Hint
Just assign the number 1.10 to the variable increase_rate.
3
Use applymap() to increase all prices
Use applymap() on the prices DataFrame with a lambda function that multiplies each price by increase_rate. Save the result in a new DataFrame called new_prices.
Pandas
Hint
Use prices.applymap(lambda price: price * increase_rate) to create new_prices.
4
Print the new prices DataFrame
Print the new_prices DataFrame to see the updated prices after the 10% increase.
Pandas
Hint
Use print(new_prices) to show the updated prices.
Practice
(1/5)
1. What does the applymap() function do in a pandas DataFrame?
easy
A. Applies a function to each column separately.
B. Applies a function to every single cell in the DataFrame.
C. Applies a function to each row separately.
D. Applies a function only to numeric columns.
Solution
Step 1: Understand the purpose of applymap()
applymap() is designed to apply a function to every individual cell in a DataFrame, not just rows or columns.
Step 2: Compare with other pandas functions
Functions like apply() work on rows or columns, but applymap() works cell-by-cell.
Final Answer:
Applies a function to every single cell in the DataFrame. -> Option B
Quick Check:
applymap() = cell-wise function application [OK]
Hint: Remember: applymap() works on each cell, not rows or columns [OK]
Common Mistakes:
Confusing applymap() with apply()
Thinking applymap() works on Series
Assuming applymap() only works on numeric data
2. Which of the following is the correct syntax to use applymap() on a DataFrame df with a function func?
easy
A. df.applymap(func)
B. df.applymap = func()
C. df.applymap[func]
D. applymap(df, func)
Solution
Step 1: Recall the method call format
In pandas, applymap() is a method of DataFrame objects and is called as df.applymap(func).
Step 2: Check other options for syntax errors
Options B, C, and D do not follow valid Python or pandas syntax for method calls.
Final Answer:
df.applymap(func) -> Option A
Quick Check:
Method call syntax = df.applymap(func) [OK]
Hint: Use dot notation and parentheses: df.applymap(func) [OK]
Common Mistakes:
Using assignment instead of method call
Using square brackets instead of parentheses
Calling applymap as a standalone function
3. Given the DataFrame df below:
A B
0 1 4
1 2 5
2 3 6
What is the output of df.applymap(lambda x: x * 2)?
medium
A. A B
0 1 4
1 2 5
2 3 6
B. A B
0 1 8
1 4 10
2 6 12
C. A B
0 2 8
1 4 10
2 6 12
D. Error: lambda function not supported
Solution
Step 1: Understand the lambda function
The lambda function doubles each value: lambda x: x * 2.
Step 2: Apply the function to each cell
Each cell in the DataFrame is multiplied by 2, so 1 becomes 2, 4 becomes 8, etc.
Final Answer:
A B
0 2 8
1 4 10
2 6 12 -> Option C
Quick Check:
Each cell doubled = output B [OK]
Hint: applymap applies function cell-wise; multiply each cell by 2 [OK]
Common Mistakes:
Thinking applymap works column-wise
Expecting original DataFrame unchanged
Assuming lambda functions cause errors
4. What is wrong with this code snippet?
import pandas as pd
df = pd.DataFrame({'A':[1,2], 'B':[3,4]})
result = df.applymap(lambda x: x + 1)
Why might result be the same as df?
medium
A. The DataFrame contains non-numeric data, so applymap fails silently.
B. The lambda function is not applied because applymap was not called correctly.
C. Nothing is wrong; result will be different from df.
D. The code is correct, but the result is not assigned back to df.
Solution
Step 1: Check the code correctness
The code correctly creates a DataFrame and applies applymap() with a lambda that adds 1.
Step 2: Understand the result assignment
The result is stored in result, which will be different from df because each cell is incremented by 1.
Final Answer:
The code is correct, but the result is not assigned back to df. -> Option D
Quick Check:
applymap() works and returns new DataFrame [OK]
Hint: applymap returns new DataFrame; original stays unchanged [OK]
Common Mistakes:
Expecting applymap to modify df in place
Thinking applymap fails on numeric data
Confusing assignment of result with in-place change
5. You have a DataFrame df with mixed data types:
A B
0 1 foo
1 2 bar
2 3 baz
You want to convert all numeric cells to their squares but leave non-numeric cells unchanged. Which applymap() function achieves this?
hard
A. df.applymap(lambda x: x**2 if isinstance(x, (int, float)) else x)
B. df.applymap(lambda x: x**2)
C. df.applymap(lambda x: str(x))
D. df.applymap(lambda x: x**2 if isinstance(x, str) else x)
Solution
Step 1: Identify the requirement
We want to square numeric values only and keep strings unchanged.
Step 2: Analyze each option
df.applymap(lambda x: x**2 if isinstance(x, (int, float)) else x) checks if the cell is int or float, then squares it; else returns original. df.applymap(lambda x: x**2) squares all cells, causing error on strings. df.applymap(lambda x: str(x)) converts all to strings, losing numeric info. df.applymap(lambda x: x**2 if isinstance(x, str) else x) squares strings (causing TypeError) and leaves numerics unchanged.
Final Answer:
df.applymap(lambda x: x**2 if isinstance(x, (int, float)) else x) -> Option A
Quick Check:
Use type check inside applymap to selectively transform [OK]
Hint: Use isinstance check inside applymap to handle mixed types [OK]
Common Mistakes:
Applying math operations to strings causing errors
Not checking data type before transformation
Converting all data to string losing numeric info
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.