df["amount"] = (df["amount"].str.replace("[$,]", "", regex=True)
.astype(float))
# "12.5%" → 0.125
df["margin"] = (df["margin"].str.replace("%", "")
.astype(float) / 100)
lo, hi = df["amount"].quantile([0.01, 0.99])
df["amount_capped"] = df["amount"].clip(lower=lo, upper=hi)
q1, q3 = df["amount"].quantile([0.25, 0.75])
iqr = q3 - q1
mask = df["amount"].between(q1 - 1.5*iqr, q3 + 1.5*iqr)
clean = df[mask]
# Negative ages, ages over 120, etc.
clean = df.query("0 < age < 120")
$ and , with a regex, then .astype(float)..clip(lower, upper) caps without removing rows.Cap the top 1% of values in a numeric column. Print how many rows were affected.