Учимся создавать колонки в pandas: assign, векторизация vs apply, map, аксессоры .str и .dt, astype, to_datetime, where/mask и биннинг через cut/qcut для аналит
Это часть 6 из 10 курса «Pandas с нуля для аналитика».
Данные почти никогда не приходят в том виде, в котором их можно сразу анализировать. Дата лежит строкой, цена с символом валюты, имя клиента в смешанном регистре, а тебе нужна когорта по месяцу регистрации. Эта часть — про то, как из сырых колонок делать те, что нужны: добавлять новые признаки, чистить текст, вытаскивать год из даты и резать числа на группы. Это и есть 80% ежедневной работы аналитика — feature engineering.
Векторизованные операции (df['a'] + df['b'], df['x'] * 2) работают на уровне C сразу над всем массивом и в десятки раз быстрее. apply вызывает Python-функцию построчно или поколоночно — гибко, но медленно, поэтому его берут только когда векторизация невозможна.
Через аксессор .str: df['name'].str.lower(), df['name'].str.contains('ООО'), df['code'].str.split('-'). Эти методы векторизованы и автоматически пропускают NaN, в отличие от обычных строковых методов Python.
Сначала приведите колонку к datetime через pd.to_datetime, затем используйте аксессор .dt: df['date'].dt.year, df['date'].dt.month, df['date'].dt.dayofweek. Для группировки по периодам удобен df['date'].dt.to_period('M').