📖 Scenario: You work in a small shop and track daily sales. You want to see how sales change day to day in percentage to understand growth or decline.
🎯 Goal: Build a small program that creates a sales data table, sets a configuration for percentage change periods, calculates the percentage change using pct_change(), and prints the result.
📋 What You'll Learn
Create a pandas DataFrame with daily sales data
Set a variable for the number of periods to calculate percentage change
Use the pct_change() method with the periods variable
Print the resulting DataFrame with percentage changes
💡 Why This Matters
🌍 Real World
Tracking percentage change in sales helps businesses understand growth trends and make better decisions.
💼 Career
Data analysts and business intelligence professionals often calculate percentage changes to report performance metrics.
Progress0 / 4 steps
1
Create sales data DataFrame
Import pandas as pd and create a DataFrame called sales_data with a column 'Sales' containing these exact values: 100, 120, 90, 150, 130.
Pandas
Hint
Use pd.DataFrame with a dictionary where the key is 'Sales' and the value is the list of sales numbers.
2
Set periods for percentage change
Create a variable called periods and set it to 1 to calculate the percentage change compared to the previous day.
Pandas
Hint
Just create a variable named periods and assign it the value 1.
3
Calculate percentage change
Create a new column in sales_data called 'Pct_Change' that stores the percentage change of 'Sales' using the pct_change() method with the periods variable.
Pandas
Hint
Use sales_data['Sales'].pct_change(periods=periods) and assign it to sales_data['Pct_Change'].
4
Print the sales data with percentage change
Print the sales_data DataFrame to display the sales and their percentage changes.
Pandas
Hint
Use print(sales_data) to show the DataFrame with the new column.
Practice
(1/5)
1. What does the pct_change() function in pandas do?
easy
A. Calculates the percentage change between consecutive rows.
B. Calculates the sum of all values in a column.
C. Sorts the DataFrame by index.
D. Removes missing values from the DataFrame.
Solution
Step 1: Understand the purpose of pct_change()
The pct_change() function calculates how much values change in percentage from one row to the next.
Step 2: Compare with other options
Options A, B, and C describe different pandas functions unrelated to percentage change.
Final Answer:
Calculates the percentage change between consecutive rows. -> Option A
Quick Check:
pct_change() = percentage change [OK]
Hint: Think: pct_change means percent change between rows [OK]
Common Mistakes:
Confusing pct_change() with sum()
Thinking it sorts data
Assuming it removes missing values
2. Which of the following is the correct way to use pct_change() on a pandas DataFrame named df?
easy
A. df.pct_change()
B. pct_change(df)
C. df.change_pct()
D. df.percent_change()
Solution
Step 1: Recall pandas method syntax
In pandas, pct_change() is a method called on a DataFrame or Series object, so the correct syntax is df.pct_change().
Step 2: Check other options
Options A, B, and D are not valid pandas syntax or method names.
Final Answer:
df.pct_change() -> Option A
Quick Check:
Method called on DataFrame = df.pct_change() [OK]
Hint: Remember: pandas methods use dot notation like df.method() [OK]
From 100 to 120: (120-100)/100 = 0.2 From 120 to 150: (150-120)/120 = 0.25 From 150 to 180: (180-150)/150 = 0.2
Step 2: Understand first row result
The first row has no previous row, so result is NaN.
Final Answer:
NaN, 0.2, 0.25, 0.2 -> Option D
Quick Check:
pct_change() = NaN, 0.2, 0.25, 0.2 [OK]
Hint: First row is always NaN; next rows show percent change [OK]
Common Mistakes:
Confusing absolute change with percent change
Forgetting first row is NaN
Mixing up order of results
4. What is wrong with this code snippet?
import pandas as pd
df = pd.DataFrame({'A': [10, 20, 30]})
result = df.pct_change(axis=1)
print(result)
medium
A. The DataFrame has no numeric columns.
B. The code is correct and will run without errors.
C. pct_change() requires a parameter 'periods' to work.
D. pct_change() cannot be used with axis=1 on this DataFrame.
Solution
Step 1: Understand axis parameter in pct_change()
By default, pct_change() calculates percentage change down rows (axis=0). axis=1 calculates change across columns.
Step 2: Check DataFrame shape and axis=1 effect
The DataFrame has only one column. pct_change(axis=1) produces NaN values everywhere since there are no multiple columns to compare, but the code runs without errors or exceptions.
Final Answer:
The code is correct and will run without errors. -> Option B
Quick Check:
axis=1 on single column = NaN output, no error [OK]
Hint: axis=1 on single column gives NaN but runs fine [OK]
Common Mistakes:
Thinking axis=1 causes error on single-column DataFrame
Believing periods parameter is required
Claiming no numeric columns
5. You have a DataFrame df with daily stock prices:
You want to calculate the percentage change over 2 days instead of 1. Which code will give the correct result?
hard
A. df.pct_change(axis=1)
B. df.pct_change(periods=1)
C. df.pct_change(periods=2)
D. df.pct_change(periods=0)
Solution
Step 1: Understand the periods parameter
The periods parameter in pct_change() sets how many rows to look back for percentage change calculation. For 2-day change, use periods=2.
Step 2: Check other options
df.pct_change(periods=1) calculates 1-day change, df.pct_change(axis=1) uses axis=1 which is incorrect for this data, and df.pct_change(periods=0) computes zero change.
Final Answer:
df.pct_change(periods=2) -> Option C
Quick Check:
periods=2 for 2-day change [OK]
Hint: Use periods=2 to compare with 2 rows before [OK]
Common Mistakes:
Using default periods=1 for 2-day change
Using axis=1 incorrectly
Setting periods=0 which is invalid
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.