Bird
Raised Fist0
Pandasdata~20 mins

rolling() for moving windows in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Rolling Window Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of rolling mean with window size 3
What is the output of the following code snippet?
Pandas
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
result = s.rolling(window=3).mean()
print(result.tolist())
A[1.0, 1.5, 2.0, 3.0, 4.0]
B[nan, nan, nan, 2.0, 3.0]
C[nan, nan, 2.0, 3.0, 4.0]
D[nan, 2.0, 3.0, 4.0, 5.0]
Attempts:
2 left
💡 Hint
Remember that rolling mean with window=3 requires 3 values before it can compute the mean.
❓ data_output
intermediate
2:00remaining
Count of rolling window sums greater than 10
Given the code below, how many rolling sums with window size 4 are greater than 10?
Pandas
import pandas as pd
s = pd.Series([2, 5, 3, 8, 7, 4, 6])
rolling_sum = s.rolling(window=4).sum()
count = (rolling_sum > 10).sum()
print(count)
A1
B3
C2
D4
Attempts:
2 left
💡 Hint
Calculate sums for windows: positions 3 to 6 and count how many exceed 10.
🔧 Debug
advanced
2:00remaining
Identify the error in rolling window code
What error does the following code produce?
Pandas
import pandas as pd
s = pd.Series([1, 2, 3, 4])
result = s.rolling(window=0).mean()
print(result)
AValueError: window must be >= 1
BTypeError: window must be an integer
CAttributeError: 'Series' object has no attribute 'rolling'
DNo error, prints rolling mean
Attempts:
2 left
💡 Hint
Check the window parameter value and its allowed range.
🚀 Application
advanced
2:30remaining
Using rolling to detect trends in stock prices
You have daily stock prices in a pandas Series. You want to create a new Series that shows the 5-day rolling average price but only for days where the average is higher than the previous day's average. Which code snippet correctly achieves this?
A
rolling_avg = prices.rolling(window=5).sum()
result = rolling_avg[rolling_avg > rolling_avg.shift(1)]
B
rolling_avg = prices.rolling(window=5).mean()
result = rolling_avg[rolling_avg > rolling_avg.shift(1)]
C
rolling_avg = prices.rolling(window=5).mean()
result = rolling_avg[rolling_avg == rolling_avg.shift(1)]
D
rolling_avg = prices.rolling(window=5).mean()
result = rolling_avg[rolling_avg < rolling_avg.shift(1)]
Attempts:
2 left
💡 Hint
Compare the rolling average to its previous value using shift(1).
🧠 Conceptual
expert
2:30remaining
Effect of min_periods in rolling windows
Consider a pandas Series with 6 values. You apply rolling(window=4, min_periods=2).sum(). How many values in the resulting Series will be non-NaN?
A5
B4
C3
D6
Attempts:
2 left
💡 Hint
min_periods=2 means the sum is computed if at least 2 values are present in the window.

Practice

(1/5)
1. What does the rolling(window=3).mean() function do on a pandas Series?
easy
A. Removes missing values from the Series
B. Calculates the sum of all values in the Series
C. Sorts the Series in ascending order
D. Calculates the average of every 3 consecutive values as the window moves

Solution

  1. Step 1: Understand rolling window concept

    The rolling(window=3) creates a moving window of size 3 over the data.
  2. Step 2: Apply mean function on each window

    The mean() calculates the average of values inside each window as it moves along the Series.
  3. Final Answer:

    Calculates the average of every 3 consecutive values as the window moves -> Option D
  4. Quick Check:

    rolling + mean = moving average [OK]
Hint: rolling(window).mean() = moving average over window [OK]
Common Mistakes:
  • Thinking rolling sums all values in the Series
  • Confusing rolling with sorting or filtering
  • Ignoring the window size effect
2. Which of the following is the correct syntax to calculate a rolling sum with a window size of 4 on a pandas DataFrame column df['sales']?
easy
A. df['sales'].rolling(4,sum()).sum()
B. df['sales'].rolling(window=4).sum()
C. df.rolling('sales', 4).sum()
D. df['sales'].rolling_sum(4)

Solution

  1. Step 1: Identify correct rolling syntax

    The rolling function requires the window size as a named argument: window=4.
  2. Step 2: Confirm method chaining

    After rolling, the aggregation function sum() is called to compute the rolling sum.
  3. Final Answer:

    df['sales'].rolling(window=4).sum() -> Option B
  4. Quick Check:

    rolling(window=4).sum() syntax correct [OK]
Hint: Use rolling(window=4).sum() for rolling sums [OK]
Common Mistakes:
  • Passing window size as positional argument without naming
  • Using non-existent method rolling_sum
  • Incorrect argument order or syntax
3. Given the following code, what is the output?
import pandas as pd
s = pd.Series([2, 4, 6, 8, 10])
result = s.rolling(window=3, min_periods=1).mean()
print(result.tolist())
medium
A. [2.0, 3.0, 4.0, 6.0, 8.0]
B. [nan, nan, 4.0, 6.0, 8.0]
C. [2.0, 3.0, 4.0, 5.0, 6.0]
D. [nan, 3.0, 4.0, 6.0, 8.0]

Solution

  1. Step 1: Understand rolling with min_periods=1

    With min_periods=1, the rolling mean starts calculating from the first value, even if the window is not full.
  2. Step 2: Calculate rolling means step-by-step

    Values: - Index 0: mean([2]) = 2.0 - Index 1: mean([2,4]) = 3.0 - Index 2: mean([2,4,6]) = 4.0 - Index 3: mean([4,6,8]) = 6.0 - Index 4: mean([6,8,10]) = 8.0
  3. Final Answer:

    [2.0, 3.0, 4.0, 6.0, 8.0] -> Option A
  4. Quick Check:

    rolling mean with min_periods=1 = [2.0, 3.0, 4.0, 6.0, 8.0] [OK]
Hint: min_periods=1 allows early rolling calculations [OK]
Common Mistakes:
  • Expecting NaN for first values despite min_periods=1
  • Miscomputing window slices for rolling mean
  • Confusing rolling mean with cumulative mean
4. The following code throws an error. What is the problem?
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
result = s.rolling(window=0).mean()
print(result)
medium
A. Window size cannot be zero; it must be at least 1
B. The Series contains integers; it must be floats
C. mean() cannot be used with rolling windows
D. The rolling function requires a string window size

Solution

  1. Step 1: Check window parameter validity

    The window size in rolling must be a positive integer greater than zero.
  2. Step 2: Identify error cause

    Using window=0 is invalid and causes a ValueError.
  3. Final Answer:

    Window size cannot be zero; it must be at least 1 -> Option A
  4. Quick Check:

    rolling window > 0 required [OK]
Hint: Window size must be positive integer > 0 [OK]
Common Mistakes:
  • Setting window=0 by mistake
  • Thinking window can be zero or negative
  • Confusing data type issues with window size errors
5. You have daily sales data in a pandas DataFrame df with a column 'sales'. You want to calculate a 7-day moving average but only want results when at least 4 days of data are available in the window. Which code correctly achieves this?
hard
A. df['sales'].rolling(window=7).mean(min_periods=4)
B. df['sales'].rolling(window=4, min_periods=7).mean()
C. df['sales'].rolling(window=7, min_periods=4).mean()
D. df['sales'].rolling(min_periods=7, window=4).mean()

Solution

  1. Step 1: Set window size to 7 for 7-day moving average

    The window=7 parameter defines the size of the moving window as 7 days.
  2. Step 2: Use min_periods=4 to require at least 4 valid days

    The min_periods=4 ensures the mean is calculated only if 4 or more days have data in the window.
  3. Step 3: Confirm correct method chaining and argument order

    The syntax rolling(window=7, min_periods=4).mean() is correct and will produce the desired result.
  4. Final Answer:

    df['sales'].rolling(window=7, min_periods=4).mean() -> Option C
  5. Quick Check:

    rolling(window=7, min_periods=4).mean() for partial window averages [OK]
Hint: Use min_periods to control minimum data points in window [OK]
Common Mistakes:
  • Swapping window and min_periods values
  • Passing min_periods to mean() instead of rolling()
  • Incorrect argument order in rolling()
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard