Pandas
1 min read
Updated 4 Aug 2026
Project 1 — Cleaning a Messy Dataset
raw = pd.DataFrame({
raw = pd.DataFrame({
'Name': [' Alice ', 'BOB', 'charlie', None, 'Alice '],
'Age': ['25', '30', 'unknown', '40', '25'],
'Salary': [50000, 60000, None, 80000, 50000],
'City': ['NYC', 'nyc', 'LA ', 'SF', 'NYC']
})
# Step 1: standardize text
raw['Name'] = raw['Name'].str.strip().str.title()
raw['City'] = raw['City'].str.strip().str.upper()
# Step 2: coerce Age to numeric (bad strings -> NaN)
raw['Age'] = pd.to_numeric(raw['Age'], errors='coerce')
# Step 3: impute missing values
raw['Age'] = raw['Age'].fillna(raw['Age'].median())
raw['Salary'] = raw['Salary'].fillna(raw['Salary'].median())
raw = raw.dropna(subset=['Name'])
# Step 4: remove duplicates
raw = raw.drop_duplicates()
print(raw)
What happened: trimmed/normalized strings, converted 'unknown' to NaN via coerce, median-imputed numerics, dropped null names, and de-duplicated. This is the canonical cleaning pipeline.