Hint: Use object.method(parameter='value') syntax [OK]
Common Mistakes:
Omitting quotes around method name
Using wrong parameter names
Calling rank as a standalone function
3. Given the pandas Series s = pd.Series([3, 1, 4, 4, 2]), what is the output of s.rank(method='average')?
medium
A. [2.0, 1.0, 4.5, 4.5, 3.0]
B. [3.0, 1.0, 4.0, 5.0, 2.0]
C. [2.0, 1.0, 5.0, 5.0, 3.0]
D. [3.0, 1.0, 4.5, 4.5, 2.0]
Solution
Step 1: Sort values and assign ranks with 'average' method
Sorted values: 1 (rank 1), 2 (rank 2), 3 (rank 3), 4 and 4 (ranks 4 and 5). For ties (4 and 4), average ranks = (4+5)/2 = 4.5.
Step 2: Map ranks back to original positions
Original values: 3 -> rank 3, 1 -> rank 1, 4 -> rank 4.5, 4 -> rank 4.5, 2 -> rank 2. So ranks are [3,1,4.5,4.5,2].
Step 3: Check options carefully
[2.0, 1.0, 4.5, 4.5, 3.0] matches ranks but with 3 replaced by 2.0. Re-examining, 3 is the third smallest value, so rank 3.0 is correct. [2.0, 1.0, 4.5, 4.5, 3.0] shows 2.0 for first value which is 3, so [2.0, 1.0, 4.5, 4.5, 3.0] is incorrect. [3.0, 1.0, 4.5, 4.5, 2.0] shows [3.0,1.0,4.5,4.5,2.0] which matches our calculation.
Final Answer:
[3.0, 1.0, 4.5, 4.5, 2.0] -> Option D
Quick Check:
Average method averages tie ranks correctly [OK]
Hint: Average method assigns mean rank to ties [OK]
Common Mistakes:
Not averaging ranks for ties
Assigning ranks in descending order by mistake
Mixing up rank positions
4. You run df['rank'] = df['score'].rank(method='first') but get unexpected ranks. What is a likely cause?
medium
A. The 'method' parameter does not accept 'first'
B. You forgot to import pandas
C. The 'score' column contains duplicate values and 'first' ranks by order of appearance
D. You need to sort the DataFrame before ranking
Solution
Step 1: Understand 'first' method behavior
The 'first' method assigns ranks in order of appearance for ties, so duplicates get ranks based on their position in the data.
Step 2: Identify why ranks seem unexpected
If duplicates exist, ranks may not be sorted by value but by order, causing confusion if expecting sorted ranks.
Final Answer:
The 'score' column contains duplicate values and 'first' ranks by order of appearance -> Option C
Quick Check:
'first' ranks ties by appearance order [OK]
Hint: Check if duplicates affect 'first' method ranking [OK]
Common Mistakes:
Assuming 'first' sorts before ranking
Thinking 'first' is invalid method
Forgetting duplicates affect rank order
5. You have a DataFrame df with a 'score' column. You want to rank scores in descending order, assign average ranks for ties, and get the rank as a percentage of total rows. Which code achieves this?
hard
A. df['rank'] = df['score'].rank(ascending=False, method='average', pct=True)
B. df['rank'] = df['score'].rank(ascending=True, method='average', pct=True)
C. df['rank'] = df['score'].rank(ascending=False, method='min', pct=False)
D. df['rank'] = df['score'].rank(method='average', pct=True)
Solution
Step 1: Set descending order and average method
To rank highest scores first, set ascending=False. To assign average ranks for ties, use method='average'.
Step 2: Get rank as percentage
Set pct=True to get ranks as percentage of total rows.