Учимся работать с пропусками в pandas: NaN, None, NaT, isna, fillna и ffill, dropna с thresh и subset, interpolate, плюс дубликаты через duplicated и drop_dupli
Это часть 7 из 10 курса «Pandas с нуля для аналитика».
Реальные данные грязные. Всегда. Ты выгружаешь таблицу заказов, а там — пустые даты доставки, пропавшие промокоды, один и тот же пользователь, задвоенный из-за бага в трекинге. Если ты посчитаешь среднее или соберёшь воронку прямо по такому, цифры будут врать — а ты этого даже не заметишь. Поэтому до любого анализа идёт скучный, но решающий этап: разобраться с пропусками и дубликатами. Эта часть как раз про него.
dropna удаляет строки или колонки с пропусками (NaN), а fillna заполняет их значением — нулём, средним, медианой или соседним через method='ffill'/'bfill'. Выбор зависит от того, можно ли терять строки и допустимо ли подставлять значение.
df.isna().sum() даёт число NaN по каждой колонке, df.isna().sum().sum() — всего по таблице, а df.isna().mean() — долю пропусков. Строки с пропусками выбираются через df[df['col'].isna()].
df.drop_duplicates() убирает полностью совпадающие строки, а subset задаёт колонки для сравнения: df.drop_duplicates(subset=['user_id'], keep='last'). Параметр keep ('first', 'last', False) определяет, какой из дублей оставить.