Bird
Raised Fist0
Pandasdata~5 mins

loc vs iloc mental model in Pandas - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What does loc do in pandas?

loc selects data by label. It uses the row and column names you see in the DataFrame.

Click to reveal answer
beginner
What does iloc do in pandas?

iloc selects data by position. It uses the row and column numbers starting from 0.

Click to reveal answer
beginner
If a DataFrame has row labels [10, 20, 30], what will df.loc[20] return?

It returns the row with label 20. Labels are exact matches.

Click to reveal answer
beginner
If a DataFrame has 5 rows, what will df.iloc[2] return?

It returns the third row (index 2) because iloc counts rows by position starting at 0.

Click to reveal answer
intermediate
How does slicing differ between loc and iloc?

loc slices include the end label (inclusive). iloc slices exclude the end position (like normal Python slices).

Click to reveal answer
Which method uses row and column labels to select data?
Aloc
Biloc
Cix
Dat
What does df.iloc[0] return?
AFirst row by label
BLast row by position
CFirst row by position
DLast row by label
If row labels are [1, 3, 5], what does df.loc[3] return?
ARow at position 3
BRow at position 1
CError
DRow with label 3
Which slicing includes the end label in pandas?
Ailoc slicing
Bloc slicing
CBoth loc and iloc
DNeither
What happens if you use df.iloc[5] on a DataFrame with 5 rows?
ARaises an IndexError
BReturns the last row
CReturns the 6th row
DReturns the first row
Explain the difference between loc and iloc in pandas using a real-life example.
Think about how you find items by name versus by order.
You got /3 concepts.
    Describe how slicing works differently with loc and iloc.
    Compare to how Python normally slices lists.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main difference between loc and iloc in pandas?
      easy
      A. loc uses labels, iloc uses integer positions
      B. loc uses integer positions, iloc uses labels
      C. loc selects columns only, iloc selects rows only
      D. loc is faster than iloc

      Solution

      1. Step 1: Understand loc selection method

        loc selects data by row and column labels, meaning it uses the actual names of rows and columns.
      2. Step 2: Understand iloc selection method

        iloc selects data by integer positions, starting from 0, ignoring labels.
      3. Final Answer:

        loc uses labels, iloc uses integer positions -> Option A
      4. Quick Check:

        loc = labels, iloc = positions [OK]
      Hint: Remember: loc = labels, iloc = integer positions [OK]
      Common Mistakes:
      • Confusing labels with positions
      • Thinking loc uses positions
      • Assuming iloc uses labels
      2. Which of the following is the correct syntax to select rows with labels 'a' to 'c' and columns 'x' to 'z' using loc?
      easy
      A. df.loc['a':'c', 'x':'z']
      B. df.iloc['a':'c', 'x':'z']
      C. df.loc[0:2, 0:2]
      D. df.iloc[0:2, 'x':'z']

      Solution

      1. Step 1: Identify loc syntax

        loc uses labels, so slicing with labels like 'a':'c' and 'x':'z' is valid.
      2. Step 2: Check other options

        Selections using iloc with label slices are invalid because iloc requires integer positions. Using integer slices with loc is incorrect when the labels are strings like 'a', 'c', etc.
      3. Final Answer:

        df.loc['a':'c', 'x':'z'] -> Option A
      4. Quick Check:

        loc uses labels in slices [OK]
      Hint: Use labels inside loc brackets, positions inside iloc [OK]
      Common Mistakes:
      • Using integer positions with loc
      • Using labels with iloc
      • Mixing loc and iloc syntax
      3. Given the DataFrame:
      import pandas as pd
      df = pd.DataFrame({'A':[10,20,30], 'B':[40,50,60]}, index=['x','y','z'])

      What is the output of df.iloc[1, 0]?
      medium
      A. 30
      B. 40
      C. 50
      D. 20

      Solution

      1. Step 1: Understand DataFrame structure

        Rows are labeled 'x','y','z' with values in column 'A' as [10,20,30]. Positions start at 0, so row 1 is 'y', column 0 is 'A'.
      2. Step 2: Apply iloc selection

        df.iloc[1, 0] selects row at position 1 ('y') and column at position 0 ('A'), value is 20.
      3. Final Answer:

        20 -> Option D
      4. Quick Check:

        iloc uses positions: row 1, col 0 = 20 [OK]
      Hint: iloc uses zero-based positions, count rows and columns from 0 [OK]
      Common Mistakes:
      • Using labels instead of positions
      • Confusing row and column indices
      • Selecting wrong cell by mixing loc and iloc
      4. Consider this code:
      import pandas as pd
      df = pd.DataFrame({'A':[1,2,3]}, index=[10,20,30])
      print(df.loc[1])

      What error will occur and why?
      medium
      A. No error, prints 2
      B. KeyError because label 1 does not exist in index
      C. IndexError because position 1 is out of range
      D. TypeError because loc expects string labels

      Solution

      1. Step 1: Check DataFrame index labels

        Index labels are [10, 20, 30], so label 1 is not present.
      2. Step 2: Understand loc behavior

        loc looks for label 1, which does not exist, causing a KeyError.
      3. Final Answer:

        KeyError because label 1 does not exist in index -> Option B
      4. Quick Check:

        loc needs existing labels, else KeyError [OK]
      Hint: loc needs exact labels; missing label causes KeyError [OK]
      Common Mistakes:
      • Thinking loc uses positions
      • Expecting no error when label missing
      • Confusing KeyError with IndexError
      5. You have a DataFrame with non-numeric row labels:
      import pandas as pd
      df = pd.DataFrame({'Score':[88, 92, 95]}, index=['John', 'Jane', 'Doe'])

      You want to select the second row using loc and iloc. Which code will correctly select the second row and what will be the difference in output?
      hard
      A. df.loc['Jane'] and df.iloc['Jane'] both select by label 'Jane'; output differs
      B. df.loc[1] selects by position 1; df.iloc['Jane'] selects by label 'Jane'; both return the same row
      C. df.loc['Jane'] selects by label 'Jane'; df.iloc[1] selects by position 1; both return the same row
      D. df.loc[1] and df.iloc[1] both select by position 1; output differs

      Solution

      1. Step 1: Understand row labels and positions

        Rows are labeled 'John', 'Jane', 'Doe' at positions 0, 1, 2 respectively.
      2. Step 2: Use loc and iloc correctly

        df.loc['Jane'] selects row with label 'Jane'. df.iloc[1] selects row at position 1, which is also 'Jane'. Both return the same row.
      3. Final Answer:

        df.loc['Jane'] selects by label 'Jane'; df.iloc[1] selects by position 1; both return the same row -> Option C
      4. Quick Check:

        loc uses label, iloc uses position; same row here [OK]
      Hint: loc needs label, iloc needs position; same row if label matches position [OK]
      Common Mistakes:
      • Using integer with loc
      • Using label with iloc
      • Assuming loc and iloc always differ
      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