This program shows how to convert text data to categories, get numeric codes, see labels, and change labels.
Pandas
import pandas as pd
# Create a Series with repeated fruit names
fruits = pd.Series(['apple', 'banana', 'apple', 'orange', 'banana', 'apple'])
# Convert to category type
fruits = fruits.astype('category')
# Show the category codes (numbers)print('Category codes:')
print(fruits.cat.codes)
# Show the category labelsprint('\nCategory labels:')
print(fruits.cat.categories)
# Change category labels order
fruits.cat.categories = ['banana', 'orange', 'apple']
print('\nAfter changing category labels:')
print(fruits)
OutputSuccess
Important Notes
Category codes start at 0 and go up to the number of categories minus one.
Changing category labels changes how categories are ordered and named.
Using categories can save memory and speed up operations on repeated text data.
Summary
Categories store repeated text as numbers for efficiency.
Use cat.codes to see numeric codes and cat.categories for labels.
You can rename or reorder categories by assigning to cat.categories.
Practice
(1/5)
1. What does cat.codes show in a pandas categorical Series?
easy
A. The data type of the Series
B. The numeric codes representing each category
C. The count of each category
D. The text labels of the categories
Solution
Step 1: Understand what cat.codes returns
cat.codes gives the integer codes for each category in the Series, replacing repeated text with numbers.
Step 2: Differentiate from cat.categories
cat.categories shows the text labels, not the codes.
Final Answer:
The numeric codes representing each category -> Option B
Quick Check:
cat.codes = numeric codes [OK]
Hint: Remember: codes are numbers, categories are labels [OK]
Common Mistakes:
Confusing codes with category labels
Thinking codes show counts
Assuming codes show data type
2. Which of the following is the correct way to access the category labels of a pandas categorical Series s?
easy
A. s.cat.categories
B. s.cat.codes
C. s.categories
D. s.cat.labels
Solution
Step 1: Recall the attribute for category labels
The category labels are accessed via cat.categories on the Series.
Step 2: Check the options for correct syntax
s.cat.categories is the correct syntax; s.categories is invalid, and cat.labels does not exist.
Final Answer:
s.cat.categories -> Option A
Quick Check:
Category labels = s.cat.categories [OK]
Hint: Use cat.categories to get labels, not just categories [OK]
Common Mistakes:
Using s.categories instead of s.cat.categories
Confusing cat.codes with labels
Trying to use non-existent cat.labels
3. Given the code:
import pandas as pd
s = pd.Series(['apple', 'banana', 'apple', 'orange'], dtype='category')
print(s.cat.codes.tolist())
What is the output?
medium
A. [0, 1, 0, 2]
B. [1, 2, 1, 3]
C. [0, 0, 1, 2]
D. [1, 0, 1, 2]
Solution
Step 1: Identify categories and their order
Categories are sorted alphabetically by default: ['apple', 'banana', 'orange'] with codes 0,1,2 respectively.
Step 2: Map each value to its code
'apple' -> 0, 'banana' -> 1, 'apple' -> 0, 'orange' -> 2, so the list is [0, 1, 0, 2].
Final Answer:
[0, 1, 0, 2] -> Option A
Quick Check:
Alphabetical categories -> codes match [OK]
Hint: Categories sorted alphabetically by default [OK]
Common Mistakes:
Assuming codes start at 1 instead of 0
Ignoring alphabetical sorting of categories
Mixing up category order
4. Which of the following is correct about this code snippet?
import pandas as pd
s = pd.Series(['cat', 'dog', 'cat'], dtype='category')
s.cat.categories = ['dog', 'cat']
print(s.cat.codes.tolist())
medium
A. You cannot assign new categories with different order directly
B. The categories list must be sorted alphabetically
C. You must convert Series to string before assigning categories
D. The code will run without errors and print [0, 1, 0]
Solution
Step 1: Understand category assignment rules
Assigning to cat.categories redefines the labels for existing codes without changing the codes or raising errors, as long as new list has same length and unique values.
Step 2: Trace execution
Original categories ['cat', 'dog'], codes [0,1,0]. New ['dog', 'cat'] same length/unique, codes unchanged, prints [0, 1, 0].
Final Answer:
The code will run without errors and print [0, 1, 0] -> Option D
Quick Check:
New categories redefine code labels, codes unchanged [OK]
Hint: Reassigning cat.categories changes labels but keeps codes intact [OK]
Common Mistakes:
Thinking reordering causes ValueError
Expecting codes to adjust to new order like [1, 0, 1]
Assuming categories must stay alphabetical
5. You have a pandas categorical Series s with categories ['low', 'medium', 'high']. You want to rename the categories to ['L', 'M', 'H'] without changing the data. Which code correctly returns the renamed Series?
hard
A. s.cat.categories = ['L', 'M', 'H']
B. s.cat.categories.rename(['L', 'M', 'H'])
C. s.cat.rename_categories(['L', 'M', 'H'])
D. s.rename_categories(['L', 'M', 'H'])
Solution
Step 1: Understand how to rename categories
The method cat.rename_categories() returns a new Series with renamed categories without changing data codes.
Step 2: Check other options for correctness
Direct assignment to cat.categories works but can cause errors if not careful; cat.categories.rename() is invalid; rename_categories() is not a Series method.
Final Answer:
s.cat.rename_categories(['L', 'M', 'H']) -> Option C
Quick Check:
Use cat.rename_categories() to rename safely [OK]
Hint: Use cat.rename_categories() to rename categories safely [OK]
Common Mistakes:
Trying to rename categories by invalid methods
Directly assigning categories without matching length
Confusing Series methods with cat accessor methods
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.