Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Date-based indexing and slicing in Data Analysis Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to select data for January 2023 using date-based indexing.

Data Analysis Python
january_data = df.loc[[1]]
Drag options to blanks, or click blank then click option'
A'2022-12'
B'2023-01'
C'2023-02'
D'2023-03'
Attempts:
3 left
💡 Hint
Common Mistakes
Using a date string for the wrong month.
Forgetting to use quotes around the date string.
2fill in blank
medium

Complete the code to slice the DataFrame for dates from March 1 to March 10, 2023.

Data Analysis Python
march_slice = df.loc[[1]:'2023-03-10']
Drag options to blanks, or click blank then click option'
A'2023-02-28'
B'2023-03-11'
C'2023-03-01'
D'2023-04-01'
Attempts:
3 left
💡 Hint
Common Mistakes
Starting the slice before the desired date range.
Using a date after the end date as the start.
3fill in blank
hard

Fix the error in the code to select data for the year 2022.

Data Analysis Python
year_data = df.loc[[1]]
Drag options to blanks, or click blank then click option'
A'2022-00'
B'2022-13'
C'2022-01-01 to 2022-12-31'
D'2022'
Attempts:
3 left
💡 Hint
Common Mistakes
Using a range string instead of a single date string.
Using invalid month numbers like 13 or 00.
4fill in blank
hard

Fill both blanks to create a dictionary of word lengths for words longer than 4 characters.

Data Analysis Python
lengths = {word: [1] for word in words if len(word) [2] 4}
Drag options to blanks, or click blank then click option'
Alen(word)
B>
C<
Dword
Attempts:
3 left
💡 Hint
Common Mistakes
Using the word itself as the value instead of its length.
Using less than instead of greater than in the condition.
5fill in blank
hard

Fill all three blanks to create a dictionary with uppercase keys and values greater than 0.

Data Analysis Python
result = { [1]: [2] for k, v in data.items() if v [3] 0}
Drag options to blanks, or click blank then click option'
Ak.upper()
Bv
C>
Dk.lower()
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase keys instead of uppercase.
Using incorrect comparison operators like '<' or '='.

Practice

(1/5)
1. What does date-based indexing in pandas allow you to do?
easy
A. Select rows from a DataFrame using dates or date ranges
B. Change the data type of a column to datetime
C. Sort the DataFrame by numerical values
D. Merge two DataFrames based on a key column

Solution

  1. Step 1: Understand date-based indexing

    Date-based indexing lets you select rows by specifying dates or date ranges in the index.
  2. Step 2: Compare with other options

    Changing data types, sorting, or merging are different operations unrelated to date-based indexing.
  3. Final Answer:

    Select rows from a DataFrame using dates or date ranges -> Option A
  4. Quick Check:

    Date-based indexing = selecting rows by dates [OK]
Hint: Date-based indexing picks rows by date labels [OK]
Common Mistakes:
  • Confusing indexing with data type conversion
  • Thinking it sorts data automatically
  • Mixing it up with merging DataFrames
2. Which of the following is the correct syntax to select data for January 2023 from a DataFrame df with a datetime index?
easy
A. df['2023-01']
B. df.loc['January 2023']
C. df['01-2023']
D. df.loc[2023, 1]

Solution

  1. Step 1: Understand partial string indexing

    Using df['2023-01'] selects all rows in January 2023 by partial date string.
  2. Step 2: Check other options

    df.loc['January 2023'] is invalid syntax; df['01-2023'] is wrong format; df.loc[2023, 1] is invalid for datetime index.
  3. Final Answer:

    df['2023-01'] -> Option A
  4. Quick Check:

    Partial date string 'YYYY-MM' selects month [OK]
Hint: Use 'YYYY-MM' string to slice by month [OK]
Common Mistakes:
  • Using month-year in wrong order
  • Trying to use month name string directly
  • Using tuple indexing for dates
3. Given the DataFrame df with datetime index from '2023-01-01' to '2023-01-05' and a column 'value' as [10, 20, 30, 40, 50], what is the output of df['2023-01-03':'2023-01-05']['value'].tolist()?
medium
A. [10, 20, 30]
B. [20, 30, 40]
C. [30, 40, 50]
D. [40, 50]

Solution

  1. Step 1: Understand slicing by date range

    The slice '2023-01-03':'2023-01-05' selects rows from Jan 3 to Jan 5 inclusive.
  2. Step 2: Extract 'value' column and convert to list

    The values on these dates are 30, 40, and 50, so the list is [30, 40, 50].
  3. Final Answer:

    [30, 40, 50] -> Option C
  4. Quick Check:

    Date slice includes start and end dates [OK]
Hint: Date slices include both start and end dates [OK]
Common Mistakes:
  • Excluding the end date in slice
  • Confusing index positions with dates
  • Selecting wrong column
4. What is wrong with this code snippet to select data for February 2023 from a DataFrame df with datetime index?
df.loc['2023-02']
medium
A. It will raise a KeyError if the index is not sorted
B. It will raise a TypeError because string slicing is not allowed
C. It will return data for all of 2023 instead of February
D. Nothing is wrong; this is correct syntax

Solution

  1. Step 1: Check syntax for date-based slicing

    Using df.loc['2023-02'] is valid to select all rows in February 2023 if the index is datetime.
  2. Step 2: Confirm no errors occur

    This syntax works correctly and returns February data; no error or wrong output happens.
  3. Final Answer:

    Nothing is wrong; this is correct syntax -> Option D
  4. Quick Check:

    Partial date string with .loc works for datetime index [OK]
Hint: Use .loc with 'YYYY-MM' to slice by month [OK]
Common Mistakes:
  • Thinking string slicing is invalid with .loc
  • Assuming index must be sorted for this to work
  • Confusing .loc with .iloc for date strings
5. You have a DataFrame df indexed by datetime from '2023-01-01' to '2023-03-31'. How would you select all rows for the first quarter of 2023 using date-based slicing?
hard
A. df.loc['2023-01':'2023-03-01']
B. df['2023-01-01':'2023-03-31']
C. df.loc['2023-Q1']
D. df['2023-01-01':'2023-03']

Solution

  1. Step 1: Understand date range for Q1 2023

    Q1 covers January 1 to March 31, so the full date range is '2023-01-01' to '2023-03-31'.
  2. Step 2: Use slicing with full dates

    Using df['2023-01-01':'2023-03-31'] selects all rows in this range correctly.
  3. Step 3: Check other options

    df.loc['2023-Q1'] is not valid; df.loc['2023-01':'2023-03-01'] selects only up to March 1st, excluding the rest of March; df['2023-01-01':'2023-03'] ends on incomplete date.
  4. Final Answer:

    df['2023-01-01':'2023-03-31'] -> Option B
  5. Quick Check:

    Use full date range strings for quarters [OK]
Hint: Use full start and end dates for quarter slicing [OK]
Common Mistakes:
  • Using quarter notation like '2023-Q1' which is invalid
  • Using partial month strings that exclude days
  • Ending slice with incomplete date string
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