Bird
Raised Fist0
Data Analysis Pythondata~20 mins

Window functions (expanding, ewm) in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Window Functions Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of expanding mean calculation
What is the output of the following code snippet that uses the expanding window function to calculate the mean?
Data Analysis Python
import pandas as pd
s = pd.Series([2, 4, 6, 8])
result = s.expanding().mean()
print(result.tolist())
A[2, 4, 6, 8]
B[2.0, 3.0, 4.0, 5.0]
C[2.0, 4.0, 6.0, 8.0]
D[2.0, 3.0, 5.0, 7.0]
Attempts:
2 left
💡 Hint
Think about how the expanding mean includes all values from the start up to the current position.
❓ data_output
intermediate
2:00remaining
Result of exponential weighted mean with alpha=0.5
Given the following code using exponential weighted mean (ewm), what is the resulting list of values?
Data Analysis Python
import pandas as pd
s = pd.Series([10, 20, 30, 40])
result = s.ewm(alpha=0.5, adjust=False).mean()
print(result.tolist())
A[10.0, 15.0, 20.0, 25.0]
B[10.0, 20.0, 30.0, 40.0]
C[10.0, 15.0, 25.0, 35.0]
D[10.0, 15.0, 22.5, 31.25]
Attempts:
2 left
💡 Hint
Remember that with adjust=False, the ewm mean is calculated recursively using the formula: new_mean = alpha * current_value + (1 - alpha) * previous_mean.
🔧 Debug
advanced
2:00remaining
Identify the error in expanding window code
What error will this code raise and why?
Data Analysis Python
import pandas as pd
s = pd.Series([1, 2, 3])
result = s.expanding(min_periods=4).mean()
print(result.tolist())
AThe output is [nan, nan, nan] because min_periods=4 is greater than the number of elements.
BTypeError because min_periods must be a float, not int.
CValueError because min_periods cannot be greater than the length of the series.
DThe output is [1.0, 1.5, 2.0] ignoring min_periods.
Attempts:
2 left
💡 Hint
Check what happens when min_periods is larger than the available data points.
🚀 Application
advanced
2:00remaining
Choosing parameters for ewm to smooth data
You have daily sales data with sudden spikes. You want to smooth the data using ewm with a half-life of 3 days. Which code snippet correctly applies this smoothing?
As.ewm(halflife=3).mean()
Bs.ewm(half_life=3).mean()
Cs.ewm(alpha=3).mean()
Ds.ewm(span=3).mean()
Attempts:
2 left
💡 Hint
Check the exact parameter name for half-life in pandas ewm.
🧠 Conceptual
expert
2:00remaining
Difference between expanding and ewm window functions
Which statement correctly describes the difference between expanding and ewm window functions?
ABoth expanding and ewm apply equal weights but differ in window size.
BExpanding windows apply exponentially decreasing weights, while ewm includes all data equally from start to current point.
CExpanding windows include all data from the start to current point equally, while ewm applies exponentially decreasing weights to past data.
DExpanding windows only consider a fixed-size window, while ewm considers all data points.
Attempts:
2 left
💡 Hint
Think about how weights are assigned in each method.

Practice

(1/5)
1. What does the expanding() window function do in data analysis?
easy
A. Calculates statistics using a fixed-size sliding window
B. Calculates statistics using only the last 3 data points
C. Calculates statistics by giving more weight to recent data points
D. Calculates statistics using all data points up to the current one

Solution

  1. Step 1: Understand expanding() function

    The expanding() function includes all data points from the start up to the current point for calculations.
  2. Step 2: Compare with other window types

    Unlike rolling windows or ewm, expanding uses all past data, not a fixed window or weighted recent data.
  3. Final Answer:

    Calculates statistics using all data points up to the current one -> Option D
  4. Quick Check:

    expanding() = all data so far [OK]
Hint: expanding() uses all data up to now, no fixed window [OK]
Common Mistakes:
  • Confusing expanding() with rolling() fixed window
  • Thinking ewm() is the same as expanding()
  • Assuming expanding() only uses recent data
2. Which of the following is the correct syntax to calculate the exponentially weighted mean of a pandas Series data with a span of 3?
easy
A. data.ewm(span=3).mean()
B. data.expanding(span=3).mean()
C. data.rolling(window=3).ewm().mean()
D. data.ewm(window=3).mean()

Solution

  1. Step 1: Recall ewm() syntax

    The ewm() function uses parameters like span to control decay; span=3 is valid.
  2. Step 2: Check each option

    data.ewm(span=3).mean() uses correct syntax: data.ewm(span=3).mean(). Others misuse parameters or combine methods incorrectly.
  3. Final Answer:

    data.ewm(span=3).mean() -> Option A
  4. Quick Check:

    ewm(span=3) is correct syntax [OK]
Hint: Use ewm(span=3).mean() for weighted mean with span 3 [OK]
Common Mistakes:
  • Using expanding() instead of ewm() for weighted mean
  • Passing window parameter to ewm() which is invalid
  • Chaining rolling() before ewm() incorrectly
3. Given the pandas Series data = pd.Series([10, 20, 30, 40]), what is the output of data.expanding().mean().tolist()?
medium
A. [10.0, 15.0, 20.0, 25.0]
B. [10.0, 20.0, 30.0, 40.0]
C. [10.0, 15.0, 25.0, 35.0]
D. [10.0, 20.0, 25.0, 30.0]

Solution

  1. Step 1: Calculate expanding mean step-by-step

    Expanding mean at each point is average of all values up to that index:
    Index 0: 10 / 1 = 10.0
    Index 1: (10+20)/2 = 15.0
    Index 2: (10+20+30)/3 = 20.0
    Index 3: (10+20+30+40)/4 = 25.0
  2. Step 2: Match calculated list with options

    The list is [10.0, 15.0, 20.0, 25.0], which matches [10.0, 15.0, 20.0, 25.0] exactly.
  3. Final Answer:

    [10.0, 15.0, 20.0, 25.0] -> Option A
  4. Quick Check:

    Expanding mean averages all so far [OK]
Hint: Expanding mean averages all data up to current index [OK]
Common Mistakes:
  • Calculating rolling mean instead of expanding mean
  • Using last value only instead of average
  • Miscomputing cumulative sums
4. You run the code data.ewm(span=2).mean() but get an error. Which fix will solve the problem?
medium
A. Import pandas as pd before using data
B. Replace span with window parameter
C. Use data.ewm(span=2).mean() on a pandas Series, not a list
D. Call mean() before ewm()

Solution

  1. Step 1: Identify cause of error

    The ewm() method is a pandas Series method. If data is a plain list, it causes an error.
  2. Step 2: Correct usage context

    Convert data to a pandas Series before calling ewm(), e.g., pd.Series(data).ewm(span=2).mean().
  3. Final Answer:

    Use data.ewm(span=2).mean() on a pandas Series, not a list -> Option C
  4. Quick Check:

    ewm() needs pandas Series [OK]
Hint: ewm() works only on pandas Series, not plain lists [OK]
Common Mistakes:
  • Trying to use ewm() on Python lists
  • Using wrong parameter names like window in ewm()
  • Calling mean() before ewm()
5. You have daily sales data with some missing days. You want to smooth the sales trend giving more weight to recent days but still include all past data. Which pandas window function and parameter combination is best?
hard
A. data.expanding(min_periods=5).mean() to average all data after 5 days
B. data.ewm(span=5, adjust=False).mean() to weight recent days more
C. data.rolling(window=5).mean() to use last 5 days only
D. data.expanding().mean() to average all data equally

Solution

  1. Step 1: Understand smoothing with weights

    To give more weight to recent days, ewm() is appropriate because it applies exponential decay.
  2. Step 2: Consider missing days and all past data

    ewm() includes all past data but weights recent points more; adjust=False gives a smoother result.
  3. Step 3: Compare options

    data.ewm(span=5, adjust=False).mean() to weight recent days more uses ewm(span=5, adjust=False) which fits the requirement best. Others either use equal weights or fixed windows.
  4. Final Answer:

    data.ewm(span=5, adjust=False).mean() -> Option B
  5. Quick Check:

    ewm() weights recent data more [OK]
Hint: Use ewm(span=5, adjust=False) for weighted smoothing with all past data [OK]
Common Mistakes:
  • Using expanding() which weights all data equally
  • Using rolling() which ignores older data beyond window
  • Not setting adjust=False for smoother ewm
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