Every cleaning job starts the same way: look. Profiling means computing the shape of your dataset — row counts, data types, null rates, value distributions, suspicious ranges — before changing a single cell. Ten minutes of profiling routinely saves hours of cleaning the wrong thing.
import pandas as pd df = pd.read_csv("orders.csv") df.info() # dtypes + non-null counts per column df.describe() # min / max / mean — impossible values surface here df["country"].value_counts() # "US", "USA", "us ", "United States"…
- Null rates per column — a 40%-empty column is a design problem, not a fillna problem.
- Impossible ranges — age 250, negative prices, dates in the future.
- Cardinality surprises — 47 variants of the same country name.
- Format drift — dates stored as text, numbers with currency symbols.






