One-Hot Encoding
What is one-hot encoding?
Section titled “What is one-hot encoding?”One-hot encoding converts a categorical column into multiple binary columns.
Example:
- city = {Pune, Delhi}becomes:
- city_Pune (0/1)
- city_Delhi (0/1)
One-hot encoding with Pandas
Section titled “One-hot encoding with Pandas”import pandas as pd
df = pd.DataFrame({"city": ["Pune", "Delhi", "Pune"], "amount": [100, 200, 150]})
encoded = pd.get_dummies(df, columns=["city"], drop_first=False)
print(encoded)Avoid dummy variable trap (optional)
Section titled “Avoid dummy variable trap (optional)”For some linear models, you can drop one category:
encoded = pd.get_dummies(df, columns=["city"], drop_first=True)
print(encoded)One-hot encoding with scikit-learn
Section titled “One-hot encoding with scikit-learn”import pandas as pd
from sklearn.preprocessing import OneHotEncoder
X = pd.DataFrame({"city": ["Pune", "Delhi", "Pune"]})
enc = OneHotEncoder(sparse_output=False, handle_unknown="ignore")
arr = enc.fit_transform(X[["city"]])
print(arr)
print(enc.get_feature_names_out(["city"]))- High-cardinality categories (thousands of unique values) can explode feature count.
- Consider grouping rare categories into “Other”.
Visualize it
Section titled “Visualize it”flowchart LR A["city column
(Pune, Delhi, Pune)"] --> B["pd.get_dummies(df, columns=['city'])"] B --> C["city_Pune (0/1)"] B --> D["city_Delhi (0/1)"]
🧪 Try It Yourself
Section titled “🧪 Try It Yourself”Exercise 1 – One-hot encode with pandas
Section titled “Exercise 1 – One-hot encode with pandas”Exercise 2 – Drop the first category
Section titled “Exercise 2 – Drop the first category”Exercise 3 – One-hot encode with scikit-learn
Section titled “Exercise 3 – One-hot encode with scikit-learn”For categories that do have a natural order, see Label Encoding instead of one-hot encoding.
pch.coffeeTagline
pch.coffeeCtapch.feedbackHeading
pch.feedbackSubheading