Bird
Raised Fist0
Data Analysis Pythondata~5 mins

Selecting rows (loc, iloc) in Data Analysis Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does loc do when selecting rows in a DataFrame?

loc selects rows by their labels or index names. It includes the last label in slicing.

Click to reveal answer
beginner
How does iloc differ from loc when selecting rows?

iloc selects rows by their integer position, starting at 0. It excludes the last index in slicing.

Click to reveal answer
beginner
What will df.loc[2:4] return if the DataFrame index is [0, 1, 2, 3, 4, 5]?

Rows with index labels 2, 3, and 4 inclusive.

Click to reveal answer
beginner
What will df.iloc[2:4] return if the DataFrame index is [0, 1, 2, 3, 4, 5]?

Rows at integer positions 2 and 3 (index labels 2 and 3), excluding position 4.

Click to reveal answer
intermediate
Can loc select rows using boolean conditions?

Yes, loc can select rows by passing a boolean mask (True/False values) to filter rows.

Click to reveal answer
Which method selects rows by integer position in a DataFrame?
Aloc
Bfilter_rows
Cselect_rows
Diloc
What does df.loc[1:3] include when selecting rows?
ARows at integer positions 1 and 2 only
BRows with index labels 1, 2, and 3
CRows with index labels 1 and 2 only
DRows at integer positions 1, 2, and 3
If a DataFrame index is ['a', 'b', 'c', 'd'], what does df.iloc[1:3] select?
ARows with labels 'c' and 'd'
BRows with labels 'a' and 'b'
CRows with labels 'b' and 'c'
DRows with labels 'b', 'c', and 'd'
Which of these is true about loc slicing?
AIt includes the last label in the slice
BIt excludes the last label in the slice
CIt only works with integer indexes
DIt cannot use boolean masks
How can you select rows where a column 'age' is greater than 30 using loc?
Adf.loc[df['age'] > 30]
Bdf.iloc[df['age'] > 30]
Cdf.loc['age' > 30]
Ddf.iloc['age' > 30]
Explain the difference between loc and iloc when selecting rows in a DataFrame.
Think about how you pick rows by name versus by number.
You got /4 concepts.
    Describe how to select rows based on a condition using loc.
    Use True/False values to pick rows.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which of the following statements correctly describes the difference between loc and iloc in pandas?
      easy
      A. loc selects rows by label, iloc selects rows by position.
      B. loc selects columns by position, iloc selects rows by label.
      C. loc selects rows by position, iloc selects columns by label.
      D. loc and iloc both select rows by position.

      Solution

      1. Step 1: Understand loc usage

        loc selects rows using the row labels or names, not their numeric position.
      2. Step 2: Understand iloc usage

        iloc selects rows based on their integer position, starting at zero.
      3. Final Answer:

        loc selects rows by label, iloc selects rows by position. -> Option A
      4. Quick Check:

        loc = label, iloc = position [OK]
      Hint: Remember: loc = label, iloc = integer position [OK]
      Common Mistakes:
      • Confusing label with position
      • Using iloc with labels
      • Assuming loc uses integer positions
      2. Which of the following is the correct syntax to select the row with label '2023-01-01' from a DataFrame df using loc?
      easy
      A. df.loc[2023-01-01]
      B. df.iloc[2023-01-01]
      C. df.iloc['2023-01-01']
      D. df.loc['2023-01-01']

      Solution

      1. Step 1: Identify correct method for label selection

        To select by label, use loc with the label as a string if it is a string label.
      2. Step 2: Check syntax for string label

        The label '2023-01-01' must be in quotes inside loc brackets.
      3. Final Answer:

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

        Use quotes for string labels with loc [OK]
      Hint: Use quotes around string labels inside loc brackets [OK]
      Common Mistakes:
      • Omitting quotes around string labels
      • Using iloc with labels
      • Using loc without brackets
      3. Given the DataFrame df below:
      import pandas as pd
      data = {'Name': ['Anna', 'Bob', 'Cara', 'Dave'], 'Age': [23, 35, 45, 29]}
      df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])

      What is the output of df.loc['b']?
      medium
      A. Name Bob Age 35 Name: 1, dtype: object
      B. Name Cara Age 45 Name: c, dtype: object
      C. Name Bob Age 35 Name: b, dtype: object
      D. Error: KeyError

      Solution

      1. Step 1: Understand DataFrame index labels

        The DataFrame has index labels 'a', 'b', 'c', 'd'. The row with label 'b' corresponds to Bob, age 35.
      2. Step 2: Use loc to select row by label

        df.loc['b'] returns the row with label 'b' as a Series with Name and Age values.
      3. Final Answer:

        Name Bob Age 35 Name: b, dtype: object -> Option C
      4. Quick Check:

        loc selects row 'b' with Bob's data [OK]
      Hint: loc uses index labels exactly as given [OK]
      Common Mistakes:
      • Using iloc instead of loc
      • Confusing label 'b' with position 1
      • Expecting a DataFrame instead of Series
      4. Consider this code snippet:
      import pandas as pd
      data = {'Value': [10, 20, 30]}
      df = pd.DataFrame(data, index=[1, 2, 3])
      row = df.loc[2]

      What is wrong with this code if the intention was to select the second row by position?
      medium
      A. It selects the row with label 2, not the second row by position.
      B. It raises a KeyError because 2 is not a label.
      C. It correctly selects the second row by position.
      D. It raises a TypeError because loc needs a string.

      Solution

      1. Step 1: Check DataFrame index labels

        The DataFrame index labels are [1, 2, 3]. Using loc[2] selects the row with label 2, not the second row by position.
      2. Step 2: Understand difference between label and position

        The second row by position is at index 1 (zero-based), so iloc[1] should be used to select by position.
      3. Final Answer:

        It selects the row with label 2, not the second row by position. -> Option A
      4. Quick Check:

        loc uses labels, iloc uses positions [OK]
      Hint: Use iloc for position, loc for label [OK]
      Common Mistakes:
      • Using loc to select by position
      • Confusing index labels with positions
      • Expecting loc to be zero-based
      5. You have a DataFrame df with a non-numeric index:
      import pandas as pd
      data = {'Score': [88, 92, 95, 70]}
      labels = ['a', 'b', 'c', 'd']
      df = pd.DataFrame(data, index=labels)

      How would you select the first two rows by position and the rows labeled 'b' and 'c' by label, then combine these selections into one DataFrame?
      hard
      A. df.loc[:2] + df.loc[['b', 'c']]
      B. pd.concat([df.iloc[:2], df.loc[['b', 'c']]])
      C. df.iloc[['a', 'b']] + df.loc[1:2]
      D. df.loc[['a', 'b']] + df.iloc[1:2]

      Solution

      1. Step 1: Select first two rows by position

        Use df.iloc[:2] to select rows at positions 0 and 1.
      2. Step 2: Select rows labeled 'b' and 'c'

        Use df.loc[['b', 'c']] to select rows by their labels.
      3. Step 3: Combine selections into one DataFrame

        Use pd.concat to join the two selections vertically.
      4. Final Answer:

        pd.concat([df.iloc[:2], df.loc[['b', 'c']]]) -> Option B
      5. Quick Check:

        Combine iloc and loc selections with concat [OK]
      Hint: Use pd.concat to join iloc and loc selections [OK]
      Common Mistakes:
      • Trying to add DataFrames with + operator
      • Mixing labels and positions incorrectly
      • Using loc with positions or iloc with labels
      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