📖 Scenario: You work for a small weather station that collects daily temperature data. You want to analyze the temperature changes over a week to find patterns like rising or falling trends.
🎯 Goal: Build a simple program to store daily temperatures, set a threshold for significant change, find days where temperature changes exceed this threshold, and print those days with their changes.
📋 What You'll Learn
Create a dictionary with exact daily temperatures for 7 days
Create a variable for the temperature change threshold
Use a loop to find days where the temperature change from the previous day is greater than the threshold
Print the days and their temperature changes that meet the condition
💡 Why This Matters
🌍 Real World
Weather stations and climate researchers analyze temperature changes over time to detect trends and unusual events.
💼 Career
Data analysts and scientists often work with time series data to find patterns, anomalies, and insights for decision making.
Progress0 / 4 steps
1
Create the daily temperature data
Create a dictionary called daily_temps with these exact entries: 'Monday': 20, 'Tuesday': 22, 'Wednesday': 19, 'Thursday': 23, 'Friday': 21, 'Saturday': 24, 'Sunday': 20.
Pandas
Hint
Use curly braces to create a dictionary with day names as keys and temperatures as values.
2
Set the temperature change threshold
Create a variable called threshold and set it to 2 to represent the minimum temperature change to consider significant.
Pandas
Hint
Just assign the number 2 to a variable named threshold.
3
Find days with significant temperature changes
Create an empty dictionary called significant_changes and a list days_order with days in order: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']. Use a for loop over range(1, len(days_order)). Inside the loop, get day = days_order[i] and prev_day = days_order[i-1], calculate the temperature change. If the absolute change is greater than threshold, add the day and change to significant_changes.
Pandas
Hint
Use a loop from 1 to 6 to compare each day with the previous day. Use abs() to get absolute change.
4
Print the significant temperature changes
Write a print statement to display the significant_changes dictionary.
Pandas
Hint
Use print(significant_changes) to show the result.
Practice
(1/5)
1. What is the main purpose of using a rolling average in time series analysis with pandas?
easy
A. To convert time series data into categorical data
B. To remove all missing values from the data
C. To smooth out short-term fluctuations and highlight longer-term trends
D. To sort the data by date in ascending order
Solution
Step 1: Understand rolling average concept
A rolling average calculates the mean of data points in a moving window, smoothing short-term noise.
Step 2: Identify its effect on time series data
This smoothing helps reveal longer-term trends by reducing random fluctuations.
Final Answer:
To smooth out short-term fluctuations and highlight longer-term trends -> Option C
Quick Check:
Rolling average = smoothing trends [OK]
Hint: Rolling average smooths data to show trends clearly [OK]
Common Mistakes:
Thinking rolling average removes missing values
Confusing rolling average with sorting
Assuming it changes data type
2. Which of the following is the correct pandas syntax to calculate a 7-day rolling mean on a DataFrame column df['sales']?
easy
A. df['sales'].rolling(window=7).mean()
B. df['sales'].rolling(7).sum()
C. df.rolling(window=7)['sales'].sum()
D. df['sales'].rolling(window=7).median()
Solution
Step 1: Recall rolling syntax in pandas
The rolling method is called on the Series with window=7 to specify 7 days.
Step 2: Apply mean function to get rolling average
Using .mean() after rolling computes the rolling mean correctly.
Final Answer:
df['sales'].rolling(window=7).mean() -> Option A
Quick Check:
rolling(window=7).mean() = correct syntax [OK]
Hint: Use rolling(window=7).mean() for 7-day rolling average [OK]
Common Mistakes:
Using rolling(7) without window= keyword
Using sum() instead of mean() for average
Applying rolling on DataFrame instead of Series
3. Given the following code, what will be the output of print(diff_series)?
import pandas as pd
s = pd.Series([10, 15, 20, 18, 25])
diff_series = s.diff()
medium
A. [NaN, 5.0, 5.0, -2.0, 7.0]
B. [10, 15, 20, 18, 25]
C. [NaN, 10, 15, 20, 18]
D. [5, 5, -2, 7, NaN]
Solution
Step 1: Understand what diff() does on a Series
The diff() method calculates the difference between each element and its previous element.
Step 2: Calculate differences step-by-step
Differences: NaN (no previous), 15-10=5, 20-15=5, 18-20=-2, 25-18=7.
Final Answer:
[NaN, 5.0, 5.0, -2.0, 7.0] -> Option A
Quick Check:
diff() = current - previous [OK]
Hint: diff() shows change from previous value [OK]
Common Mistakes:
Forgetting first value is NaN
Confusing diff() with cumulative sum
Misordering differences
4. The following code throws an error. What is the cause?
A. The rolling window size must be specified with window=3
B. There is no error; the code runs correctly
C. The rolling method cannot be used on DataFrames
D. The DataFrame index must be reset before rolling
Solution
Step 1: Check rolling syntax on DataFrame
Using df.rolling(3).sum() is valid; window size can be passed as positional argument.
Step 2: Verify if code runs without error
Rolling sum on DataFrame with datetime index works fine; no reset needed.
Final Answer:
There is no error; the code runs correctly -> Option B
Quick Check:
rolling(3) on DataFrame = valid [OK]
Hint: rolling() accepts window as positional argument [OK]
Common Mistakes:
Assuming window= is mandatory
Thinking index must be reset
Believing rolling only works on Series
5. You have daily sales data in a DataFrame df with a datetime index. You want to detect if sales on a day are unusually high compared to the previous week. Which pandas method combination is best to identify these spikes?
hard
A. Sort the DataFrame by sales and pick top 7 days
B. Use diff() to find daily changes and select days with positive differences
C. Apply autocorrelation to find repeated patterns
D. Calculate 7-day rolling mean and then find days where sales exceed mean by a threshold
Solution
Step 1: Understand the goal to find spikes compared to previous week
We want to compare each day's sales to the average of the last 7 days.
Step 2: Use rolling mean to get weekly average and compare
Calculating 7-day rolling mean smooths data; days exceeding this mean by threshold indicate spikes.
Final Answer:
Calculate 7-day rolling mean and then find days where sales exceed mean by a threshold -> Option D
Quick Check:
Rolling mean + threshold = spike detection [OK]
Hint: Compare daily sales to 7-day rolling mean for spikes [OK]
Common Mistakes:
Using diff() only finds changes, not spikes
Sorting ignores time context
Autocorrelation finds patterns, not spikes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.