Bird
Raised Fist0
Data Analysis Pythondata~20 mins

Forward fill and backward fill in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Fill Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of forward fill on missing data?
Given the following pandas DataFrame with missing values, what will be the result after applying forward fill (ffill)?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({'A': [1, None, None, 4, None, 6]})
result = df.ffill()
print(result)
A
     A
0  1.0
1  1.0
2  NaN
3  4.0
4  4.0
5  6.0
B
     A
0  1.0
1  NaN
2  NaN
3  4.0
4  NaN
5  6.0
C
     A
0  1.0
1  1.0
2  1.0
3  4.0
4  4.0
5  6.0
D
     A
0  NaN
1  NaN
2  NaN
3  4.0
4  4.0
5  6.0
Attempts:
2 left
💡 Hint
Forward fill replaces missing values with the last known non-missing value above it.
❓ Predict Output
intermediate
2:00remaining
What is the output of backward fill on missing data?
Given the following pandas DataFrame with missing values, what will be the result after applying backward fill (bfill)?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({'A': [1, None, None, 4, None, 6]})
result = df.bfill()
print(result)
A
     A
0  1.0
1  NaN
2  NaN
3  4.0
4  NaN
5  6.0
B
     A
0  1.0
1  4.0
2  4.0
3  4.0
4  6.0
5  6.0
C
     A
0  1.0
1  1.0
2  1.0
3  4.0
4  4.0
5  6.0
D
     A
0  NaN
1  4.0
2  4.0
3  4.0
4  6.0
5  NaN
Attempts:
2 left
💡 Hint
Backward fill replaces missing values with the next known non-missing value below it.
❓ data_output
advanced
2:00remaining
How many missing values remain after forward fill?
Given this DataFrame, how many missing values remain after applying forward fill on column 'B' only?
Data Analysis Python
import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [np.nan, 5, np.nan, 7]})
result = df.copy()
result['B'] = result['B'].ffill()
missing_count = result['B'].isna().sum()
print(missing_count)
A1
B0
C2
D3
Attempts:
2 left
💡 Hint
Forward fill cannot fill missing values at the start if no previous value exists.
❓ visualization
advanced
3:00remaining
Which plot shows the effect of backward fill on missing data?
You have a time series with missing values. Which plot correctly shows the data after applying backward fill?
Data Analysis Python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

dates = pd.date_range('2024-01-01', periods=6)
values = [1, np.nan, np.nan, 4, np.nan, 6]
df = pd.DataFrame({'Value': values}, index=dates)
df_bfill = df.bfill()

plt.figure(figsize=(8,4))
plt.plot(df.index, df['Value'], marker='o', label='Original')
plt.plot(df_bfill.index, df_bfill['Value'], marker='x', label='Backward Fill')
plt.legend()
plt.title('Backward Fill Effect')
plt.xlabel('Date')
plt.ylabel('Value')
plt.grid(True)
plt.tight_layout()
plt.show()
AA line plot where missing points are replaced by the next known value, showing steps upward at missing points.
BA line plot where missing points remain as gaps, no fill applied.
CA line plot where missing points are replaced by the previous known value, showing flat steps backward.
DA scatter plot with random points unrelated to the data.
Attempts:
2 left
💡 Hint
Backward fill uses the next valid value to fill missing points, so the line jumps up at missing points.
🧠 Conceptual
expert
2:30remaining
What is the difference between forward fill and backward fill in time series data?
Choose the best explanation of how forward fill and backward fill handle missing values differently in time series data.
AForward fill replaces missing values with zeros; backward fill replaces missing values with the mean of the column.
BForward fill replaces missing values with the next known value after them; backward fill replaces missing values with the last known value before them.
CBoth forward fill and backward fill replace missing values with the average of previous and next known values.
DForward fill replaces missing values with the last known value before them; backward fill replaces missing values with the next known value after them.
Attempts:
2 left
💡 Hint
Think about the direction in which each fill method propagates values.

Practice

(1/5)
1. What does forward fill do when handling missing data in a dataset?
easy
A. It removes rows with missing values.
B. It copies the next known value backward to fill missing spots.
C. It replaces missing values with zero.
D. It copies the last known value forward to fill missing spots.

Solution

  1. Step 1: Understand forward fill concept

    Forward fill means filling missing data by copying the last known value forward to the next missing spot.
  2. Step 2: Compare options with definition

    "It copies the last known value forward to fill missing spots." matches this definition exactly, while others describe different methods.
  3. Final Answer:

    It copies the last known value forward to fill missing spots. -> Option D
  4. Quick Check:

    Forward fill = copy last known value forward [OK]
Hint: Forward fill copies previous value forward to fill gaps [OK]
Common Mistakes:
  • Confusing forward fill with backward fill
  • Thinking forward fill removes missing data
  • Assuming forward fill replaces with zero
2. Which of the following is the correct syntax to apply forward fill on a pandas DataFrame df?
easy
A. df.fillna(method='ffill')
B. df.fillna(method='bfill')
C. df.fillna(forward=True)
D. df.fillna(direction='forward')

Solution

  1. Step 1: Recall pandas fillna syntax

    In pandas, forward fill is done by fillna(method='ffill').
  2. Step 2: Check options for correct syntax

    df.fillna(method='ffill') matches the correct method name 'ffill'. df.fillna(method='bfill') performs backward fill. The remaining options use invalid syntax.
  3. Final Answer:

    df.fillna(method='ffill') -> Option A
  4. Quick Check:

    Forward fill method = 'ffill' [OK]
Hint: Use method='ffill' for forward fill in pandas [OK]
Common Mistakes:
  • Using 'bfill' instead of 'ffill' for forward fill
  • Passing invalid parameters like forward=True
  • Confusing method names in fillna
3. Given the DataFrame df below, what will be the result of df.bfill()?
import pandas as pd
df = pd.DataFrame({'A': [1, None, None, 4, None]})
print(df.bfill())
medium
A. A 0 1.0 1 4.0 2 4.0 3 4.0 4 NaN
B. A 0 1.0 1 1.0 2 1.0 3 4.0 4 NaN
C. A 0 1.0 1 NaN 2 NaN 3 4.0 4 NaN
D. A 0 1.0 1 4.0 2 4.0 3 4.0 4 4.0

Solution

  1. Step 1: Understand backward fill on given data

    Backward fill copies the next known value backward to fill missing spots. Here, missing values at index 1 and 2 get filled with 4.0 from index 3. The last missing at index 4 has no next value, so remains NaN.
  2. Step 2: Match output with options

    A 0 1.0 1 4.0 2 4.0 3 4.0 4 NaN matches this result exactly. A 0 1.0 1 4.0 2 4.0 3 4.0 4 4.0 incorrectly fills last NaN with 4.0, others do not match.
  3. Final Answer:

    A 0 1.0 1 4.0 2 4.0 3 4.0 4 NaN -> Option A
  4. Quick Check:

    Backward fill fills missing with next known value [OK]
Hint: Backward fill uses next known value to fill missing [OK]
Common Mistakes:
  • Assuming last NaN gets filled when no next value exists
  • Confusing forward and backward fill results
  • Misreading index positions in output
4. You run the code below but get an error. What is the mistake?
import pandas as pd
df = pd.DataFrame({'A': [None, 2, None]})
df.fillna(method='forward')
medium
A. fillna requires inplace=True to work.
B. DataFrame cannot have None values.
C. The method name 'forward' is invalid; should be 'ffill'.
D. fillna does not accept method parameter.

Solution

  1. Step 1: Check fillna method parameter

    The valid method names are 'ffill' for forward fill and 'bfill' for backward fill. 'forward' is not valid.
  2. Step 2: Identify cause of error

    Using 'forward' causes a ValueError. DataFrames can have None values, fillna does not require inplace=True, and it accepts the method parameter.
  3. Final Answer:

    The method name 'forward' is invalid; should be 'ffill'. -> Option C
  4. Quick Check:

    Use 'ffill' for forward fill method [OK]
Hint: Use 'ffill' not 'forward' as method name in fillna [OK]
Common Mistakes:
  • Using 'forward' instead of 'ffill'
  • Thinking inplace=True is mandatory
  • Believing fillna can't handle None values
5. You have a DataFrame df with missing values scattered in column 'B'. You want to fill missing values by first forward filling, then backward filling any remaining missing values. Which code correctly does this?
hard
A. df['B'].fillna(method='ffill', method='bfill')
B. df['B'].fillna(method='ffill').fillna(method='bfill')
C. df['B'].fillna(method='bfill').fillna(method='ffill')
D. df['B'].fillna(method=['ffill', 'bfill'])

Solution

  1. Step 1: Understand chaining fillna calls

    To fill missing values first forward then backward, chain fillna calls: first with method='ffill', then on result with method='bfill'.
  2. Step 2: Evaluate options for correct chaining

    df['B'].fillna(method='ffill').fillna(method='bfill') correctly chains fillna twice. df['B'].fillna(method='bfill').fillna(method='ffill') reverses order. Attempting multiple methods in one call (duplicate kwargs or list) uses invalid syntax.
  3. Final Answer:

    df['B'].fillna(method='ffill').fillna(method='bfill') -> Option B
  4. Quick Check:

    Chain fillna with 'ffill' then 'bfill' [OK]
Hint: Chain fillna with 'ffill' then 'bfill' to fill all gaps [OK]
Common Mistakes:
  • Trying to pass multiple methods in one fillna call
  • Reversing forward and backward fill order
  • Not chaining calls, so some NaNs remain
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