Python Central HubSign in

Data Analytics with Python / Phase 4: Data Preprocessing and Cleaning

Label Encoding

Encode categories as integers and understand when label encoding is appropriate (and when it isn’t).

What is label encoding?

Label encoding converts categories into integers:

  • high → 2

When it’s OK

  • For ordinal categories (where order matters):

    • low < medium < high
  • For tree models sometimes (but still be careful)

When to avoid it

For nominal categories (no order):

  • city, color, country

Label encoding may trick models into believing an order exists.

Example: ordinal encoding (manual)

Python
import pandas as pd
 
df = pd.DataFrame({"priority": ["low", "high", "medium", "low"]})
 
mapping = {"low": 0, "medium": 1, "high": 2}
df["priority_code"] = df["priority"].map(mapping)
 
print(df)

Using scikit-learn LabelEncoder

LabelEncoder is mainly designed for encoding target labels, not features.

Python
from sklearn.preprocessing import LabelEncoder
 
le = LabelEncoder()
y = ["spam", "ham", "ham", "spam"]
print(le.fit_transform(y))
print(le.classes_)

Tip

Use:

  • One-hot encoding for nominal categories
  • Ordinal mapping for ordered categories

Visualize it

diagram Label encoding flow mermaid
Each distinct category is assigned an integer code; order is preserved only when the categories are truly ordinal.

🧪 Try It Yourself

Exercise 1 – Encode with a manual mapping

exerciseYour turn

Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.

Output
Press Run to see what your code prints.

Exercise 2 – Encode with scikit-learn's LabelEncoder

exerciseYour turn

Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.

Output
Press Run to see what your code prints.

Exercise 3 – Get codes from a category dtype

exerciseYour turn

Tab indents. Press Escape, then Tab, to leave the editor. Control plus Enter runs the code; Control plus Shift plus Enter submits it.

Output
Press Run to see what your code prints.

Check your understanding

quizCheck yourself
  1. When is label encoding appropriate for a feature?

    Show answer

    A — For ordinal categories such as low, medium and high — Integers imply an order, which is fine when one exists. For nominal data it can trick a model into believing city 2 is greater than city 1.

  2. With mapping low=0, medium=1, high=2, what is the priority_code for the values low, high, medium and low?

    Show answer

    A — 0, 2, 1, 0 — map replaces each value using the dict, giving 0 for low, 2 for high, 1 for medium and 0 for low.

  3. For y = spam, ham, ham, spam, what does LabelEncoder().fit_transform(y) return?

    Show answer

    A — [1 0 0 1] — classes_ are sorted alphabetically as ham then spam, so ham is 0 and spam is 1.

  4. What is LabelEncoder mainly designed for?

    Show answer

    A — Encoding target labels, not features — For features, use one-hot encoding for nominal columns or an ordinal mapping for ordered ones.

Next

For categories with no natural order, prefer One-Hot Encoding so the model doesn't assume a ranking that isn't real.

Was this page helpful?

Let us know how we did