Нашли ошибку?

Курс с нуля

pandas

Таблицы pandas с нуля: загрузка, выбор и очистка данных, группировка, сводные таблицы, соединение и временные ряды — на сквозных данных магазина, погоды и оценок.

12 модулей51 урок≈ 16 ч
пройдено 0 из 51
Начать курс

Для кого

Для тех, кто знает основы Python и ни разу не работал с pandas. Курс доводит до уверенного рабочего уровня: вы сможете взять CSV-выгрузку, почистить её и ответить на вопросы по данным.

Что нужно знать

  • Базовый Python: списки, словари, циклы, функции. Проверить себя можно в первом уроке курса NumPy — «Python-минимум».
  • Курс NumPy не обязателен, но полезен. pandas построен на NumPy, и то немногое, что из него понадобится (пропуски np.nan, условия np.where), объясняется там, где встречается. Кто хочет понимать, что происходит «под капотом», — первые модули курса NumPy.
  • Установка ничего не нужна: код выполняется прямо в браузере. Любой урок можно скачать как .ipynb и пройти в Jupyter или Google Colab.

Как устроены уроки

Урок — это ноутбук: короткое объяснение, код, который можно выполнить и изменить, упражнения с проверкой и вопросы. Python работает прямо в браузере; урок можно скачать как .ipynb для Jupyter или Colab.

Программа

Модуль 1

Первые шаги

Открыть таблицу, посмотреть на неё и понять, из чего она состоит: DataFrame, Series, индекс.

  1. Первая таблицаЗагрузить CSV-файл в pandas и оглядеться — первые и последние строки, размер таблицы, названия столбцов.15 мин
  2. Столбец — это SeriesВзять столбец таблицы, понять, из чего он состоит, посчитать по нему сумму, среднее, наибольшее и наименьшее и выполнить арифметику сразу со всем столбцом.15 мин
  3. Таблица своими рукамиСобрать DataFrame из словаря списков или списка словарей, посмотреть типы столбцов, задать свои подписи строк и создать отдельный Series.15 мин
  4. Первичный осмотрЧто делать с незнакомой таблицей в первые минуты: info и describe — типы, пропуски и сводка по числам; value_counts, nunique и unique — какие значения встречаются и как часто.20 мин
  5. мини-проектМини-проект: знакомство с магазиномПервый самостоятельный осмотр данных «Кофейной лавки»: сколько заказов и покупателей, какие города и категории, выручка за год и средний чек.20 мин
После модуля вы умеете
  • загрузить CSV-файл: pd.read_csv
  • посмотреть на таблицу: head, tail, shape, columns, info, describe
  • взять столбец и посчитать по нему сумму, среднее, число разных значений
  • создать небольшую таблицу своими руками
Модуль 2

Выбор данных

Достать из таблицы ровно то, что нужно: столбцы, строки по номеру и по метке, строки по условию.

  1. Выбор столбцовНесколько столбцов — список названий в двойных скобках; чем таблица из одного столбца отличается от Series; итоги сразу по нескольким столбцам; запись через точку и её ловушки.15 мин
  2. Строки: loc и ilocДва способа достать строку, ячейку или блок таблицы: iloc — по позиции, loc — по метке. Чем они отличаются, когда дают разный результат и почему у loc конец среза входит.20 мин
  3. Фильтрация строкУсловие превращает столбец в маску из True и False, маска отбирает строки. Несколько условий соединяют & (и), | (или), ~ (не) — обязательно со скобками.20 мин
  4. Удобные фильтрыКороткие записи частых условий: isin — значение из списка, between — число в диапазоне, loc[маска, столбцы] — строки и столбцы разом, query — условие обычной строкой.20 мин
  5. мини-проектМини-проект: покупки по городамПять вопросов менеджера к таблице продаж — и на каждый ответ выборкой: крупные покупки в Казани, чай зимой, маркетплейс против сайта, дорогие товары по городам, рекордная покупка.20 мин
После модуля вы умеете
  • выбрать один или несколько столбцов и не спутать Series с таблицей
  • достать строки и ячейки по позиции (iloc) и по метке (loc)
  • отфильтровать строки по условию и по нескольким условиям: &, |, ~
  • пользоваться isin, between и query
Модуль 3

Изменение данных

Добавить и пересчитать столбцы, изменить значения по условию, отсортировать таблицу — и быть уверенным, что изменение действительно произошло.

  1. Новые столбцыДобавить в таблицу вычисляемый столбец, перезаписать и округлить его; assign, rename и drop возвращают новую таблицу, а исходную не трогают.20 мин
  2. Изменить значенияЗаписать значение в ячейку и в строки по условию через loc; почему запись в два шага df[маска][столбец] = … ничего не меняет; правило Copy-on-Write и явная копия copy().20 мин
  3. СортировкаОтсортировать таблицу по столбцу и по нескольким сразу, по возрастанию и убыванию; nlargest и nsmallest — первые N; сортировка Series и сортировка по индексу.15 мин
  4. Замены и правилаЗначение по словарю — map, замена отдельных значений — replace, столбец по условию — np.where, своё правило — apply. И почему сначала стоит поискать готовую операцию.20 мин
  5. мини-проектМини-проект: новый прайс-листПересчитать цены магазина на следующий год: множитель по категории, округление до десятков, заморозка цен дорогих товаров, изменение в рублях, отсортированный прайс-лист и пятёрка самых подорожавших.20 мин
После модуля вы умеете
  • добавить вычисляемый столбец, переименовать и удалить столбцы
  • изменить значения по условию через loc и объяснить, почему запись в два шага не работает (Copy-on-Write)
  • отсортировать таблицу по одному и нескольким столбцам, найти первые N
  • заменить значения по словарю и по условию: map, replace, np.where, apply
Модуль 4

Очистка и типы

Настоящие выгрузки приходят грязными: пропуски, числа текстом, лишние пробелы, даты в разных форматах, дубли. Приводим их к виду, с которым можно считать.

  1. ПропускиЧто такое NaN, как найти и посчитать пропуски, как они ведут себя в суммах, средних и сравнениях, когда строки с пропусками удалять, а когда заполнять — и чем опасно заполнение нулём.20 мин
  2. ТипыПочему числа читаются как текст и как это заметить; astype и pd.to_numeric с errors="coerce"; целые числа с пропусками — тип Int64; что теряется при переводе дробных в целые.20 мин
  3. Текст: .strМетоды строк для целого столбца: убрать пробелы, выровнять регистр, заменить часть текста, найти подстроку, разбить на слова. Невидимые пробелы и разница между str.replace и replace.20 мин
  4. ДатыПревратить текст в даты: pd.to_datetime и parse_dates; достать месяц, день и день недели через .dt; сравнить и вычесть даты; формат ДД.ММ.ГГГГ и выгрузка с датами в разных форматах.20 мин
  5. ДубликатыНайти и удалить повторы: полные и по ключевым столбцам; какую запись оставить; почему слишком грубый ключ удаляет лишнее, а грязный текст прячет дубликаты; reset_index после удаления строк.20 мин
  6. мини-проектМини-проект: грязная выгрузка клиентов, часть 1Выгрузка клиентов из CRM «как есть»: пробелы, разный регистр, сокращения городов. В первой части осматриваем её и чистим текст — коды, имена, города, сегменты и почту.15 мин
  7. мини-проектМини-проект: грязная выгрузка клиентов, часть 2Продолжаем чистить выгрузку клиентов: даты в двух форматах, баллы текстом, дубли. Сверяем результат с эталоном и отвечаем маркетингу: 257 строк превращаются в 240 клиентов.20 мин
После модуля вы умеете
  • найти пропуски и решить, что с ними делать: isna, dropna, fillna
  • исправить тип столбца: astype, pd.to_numeric, целые с пропусками Int64
  • почистить текст методами .str: пробелы, регистр, замены, поиск
  • превратить текст в даты и достать из них месяц, день недели, разность
  • найти и удалить дубликаты
Модуль 5

Статистика

Описать данные числами: типичное значение и разброс, доли и накопленные доли, интервалы.

  1. Описательная статистикаСреднее и медиана — когда какое; стандартное отклонение — насколько данные разбросаны; квантили — границы долей; idxmax и idxmin — в какой строке максимум и минимум.20 мин
  2. Частоты и долиОт количеств к долям и процентам: value_counts(normalize=True); как пропуски меняют доли; накопленная сумма cumsum и вопросы «сколько заказов доставлено за неделю» и «сколько покупателей дают половину продаж».20 мин
  3. ИнтервалыПревратить числа в группы: pd.cut делит по заданным границам и подписывает интервалы, pd.qcut — на равные по числу строк части. Как читать запись (0, 15], что происходит на границах и за ними.15 мин
  4. мини-проектМини-проект: климат двух городовСравнить Сочи и Новосибирск по данным за год: средняя температура и её разброс, доли морозных и жарких дней, осадки, годовая амплитуда — и найти зимние оттепели в Москве.20 мин
После модуля вы умеете
  • выбрать между средним и медианой и измерить разброс: std, quantile
  • найти, где достигается максимум и минимум: idxmax, idxmin
  • посчитать доли и накопленные доли: value_counts(normalize=True), cumsum
  • разбить числа на интервалы: pd.cut и pd.qcut
Модуль 6

Группировка

Главный приём анализа данных: разделить строки на группы, посчитать итог по каждой и собрать результаты в одну таблицу.

  1. ГруппировкаРазделить строки на группы, посчитать итог в каждой и собрать результаты: groupby(...)[...].sum() и другие агрегаты. Чем size отличается от count и почему после groupby нужно выбрать столбец.20 мин
  2. Несколько показателейПосчитать по группам сразу несколько итогов: agg со списком функций и именованная агрегация со своими названиями столбцов. Группировка по двум столбцам и результат с индексом из двух уровней.20 мин
  3. Результат группировкиПревратить результат группировки в обычную таблицу — reset_index и as_index=False; фильтровать и сортировать группы; найти лучших и худших внутри каждой группы — сортировка и groupby(...).head(n).20 мин
  4. transformВернуть итог группы в каждую строку таблицы: transform. Доля строки внутри группы, отклонение от среднего группы, сумма заказа рядом с каждой позицией, отбор строк по свойству всей группы.20 мин
  5. мини-проектМини-проект: какой канал продаж лучшеСравнить сайт, приложение и маркетплейс: выручка, заказы, покупатели, средний и медианный чек, доля канала в каждом городе и состав продаж — группировкой, agg и transform.20 мин
После модуля вы умеете
  • посчитать итог по каждой группе: groupby(...)[...].sum() и другие агрегаты
  • получить несколько показателей сразу и дать им названия: agg
  • группировать по двум столбцам, превращать результат в обычную таблицу, находить лучших в каждой группе
  • вернуть итог группы в каждую строку: transform — доли и отклонения внутри группы
Модуль 7

Сводные таблицы и форма

Одни и те же данные можно разложить по-разному: строками на каждое наблюдение или таблицей «строки × столбцы». Строим сводные таблицы и переводим данные из одной формы в другую.

  1. Сводные таблицыpivot_table раскладывает итоги по двум измерениям: одно — в строках, другое — в столбцах. Параметры values, index, columns, aggfunc; среднее по умолчанию; итоги margins и заполнение пустых ячеек fill_value.20 мин
  2. Таблицы частотpd.crosstab считает, сколько раз встречается каждое сочетание значений двух столбцов, и превращает количества в доли — по строкам, по столбцам или от всей таблицы. Как не перепутать направление долей.15 мин
  3. Длинный и широкий форматОдни и те же данные в двух формах: широкой — для чтения глазами, длинной — для вычислений. melt переводит широкую таблицу в длинную, pivot — обратно; чем pivot отличается от pivot_table.20 мин
  4. мини-проектМини-проект: ведомостьОценки 30 студентов за год в длинном формате: собрать годовую ведомость, найти лучших студентов и сильнейшие группы по предметам, сравнить семестры, посчитать долю незачётов и вернуть ведомость в длинную форму.20 мин
После модуля вы умеете
  • построить сводную таблицу: pivot_table с итогами и заполнением пустых ячеек
  • посчитать таблицу частот и доли по строкам и столбцам: pd.crosstab
  • перевести таблицу из широкой формы в длинную и обратно: melt и pivot
Модуль 8

Объединение таблиц

Данные редко лежат в одной таблице. Склеиваем файлы друг под другом и соединяем таблицы по ключу — и проверяем, что при этом ничего не потерялось и не размножилось.

  1. Склеить таблицыpd.concat ставит таблицы друг под другом: выгрузки по полугодиям, файлы нескольких станций. Почему после склейки повторяются метки и зачем ignore_index; что бывает, когда столбцы разные; склейка столбцами.15 мин
  2. Соединить по ключуmerge соединяет две таблицы по общему столбцу-ключу: к каждой строке заказа подставляет данные о товаре или покупателе. Виды соединения inner и left, строки без пары и проверка числа строк.20 мин
  3. Ключи и ловушкиКлючи с разными названиями — left_on и right_on; одноимённые столбцы — suffixes; соединение по двум ключам; главная ловушка merge — повторы ключа, которые размножают строки; проверки validate и indicator.20 мин
  4. мини-проектМини-проект: магазин из трёх таблицСобрать данные магазина из заказов, справочника товаров и справочника клиентов, проверить соединение, сверить с готовой таблицей и посчитать то, чего раньше не было, — прибыль и маржу по городам и товарам, доставку по каналам.20 мин
После модуля вы умеете
  • склеить таблицы с одинаковыми столбцами: pd.concat
  • соединить две таблицы по ключу: merge, виды соединения inner и left
  • соединять по ключам с разными названиями и по нескольким ключам, различать одноимённые столбцы
  • проверить соединение: число строк, строки без пары, validate и indicator
Модуль 9

Индексы

Индекс — не просто номера строк, а подписи, по которым pandas находит и сопоставляет данные. Разбираемся, что он делает и как не потерять значения при вычислениях между таблицами.

  1. ИндексСделать столбец индексом — set_index — и находить строки по осмысленным меткам; вернуть индекс в столбцы — reset_index; index_col при чтении файла; срезы по отсортированному индексу; что бывает, когда метки повторяются.20 мин
  2. Выравнивание по индексуАрифметика двух Series идёт не по порядку, а по меткам: одинаковые метки находят друг друга, а несовпавшие дают NaN. Методы add и sub с fill_value, reindex, сравнение Series и запись Series в столбец таблицы.20 мин
  3. мини-проектМини-проект: план и фактСравнить план продаж с фактом по городам и месяцам: поставить план и факт рядом по общему индексу, разобраться с парами без плана и без факта, посчитать отклонение и выполнение, найти слабые месяцы.20 мин
После модуля вы умеете
  • сделать столбец индексом и вернуть его обратно: set_index, reset_index
  • находить строки по осмысленным меткам и срезам меток
  • объяснить, почему арифметика двух Series идёт по меткам и откуда берётся NaN
  • управлять несовпадающими метками: fill_value, reindex
Модуль 10

Временные ряды

Данные, привязанные ко времени: продажи по дням, температура по дням. Даты в индексе, пересчёт в недели и месяцы, сглаживание и сравнение с прошлым периодом.

  1. Даты как индексВременной ряд — значения, привязанные к датам. Делаем даты индексом и выбираем день, месяц или период строкой: loc["2025-03"]. Что делать с днями, которых нет в данных, — pd.date_range и reindex.20 мин
  2. Пересчёт частотыresample превращает дневной ряд в недельный, месячный или квартальный: сумма, среднее и другие итоги по периодам. Обозначения частот, почему "M" больше не работает, неполные недели по краям и пустые периоды.20 мин
  3. Окна и сдвигиСкользящее окно rolling сглаживает случайные колебания; shift сдвигает ряд, чтобы сравнить день с тем же днём неделей раньше; diff и pct_change считают изменение и рост к прошлому периоду.20 мин
  4. мини-проектМини-проект: погода и продажиЗависят ли продажи чая от погоды? Ставим дневные продажи рядом с температурой, измеряем связь корреляцией и смотрим, как она меняется, если перейти от дней к неделям и месяцам.20 мин
После модуля вы умеете
  • сделать даты индексом и выбирать периоды строкой: loc["2025-03"]
  • пересчитать дневные данные в недельные и месячные: resample
  • сгладить ряд скользящим средним: rolling
  • сравнить с прошлым периодом: shift, diff, pct_change
Модуль 11

Графики и хороший код

Быстрые графики прямо из таблицы и способ писать анализ так, чтобы его было легко перечитать и повторить на новых данных.

  1. ГрафикиМетод .plot строит график прямо из Series или таблицы: линия — для изменения во времени, столбцы — для сравнения категорий, гистограмма — для распределения. Заголовок, подписи осей и несколько рядов на одном графике.20 мин
  2. Цепочки методовЗаписать анализ как последовательность шагов сверху вниз: цепочка методов в скобках, assign с lambda, query, свои шаги через pipe. И почему цикл по строкам iterrows почти всегда хуже операций со столбцами.20 мин
  3. мини-проектМини-проект: отчёт одной цепочкойОт сырого CSV до графика — читаемыми цепочками: функция подготовки как шаг pipe, месячная выручка, сводная по каналам с долей сайта, своя функция «лучшие товары категории» и график трёх каналов.20 мин
После модуля вы умеете
  • построить линейный график, столбцы и гистограмму методом .plot и подписать их
  • выбрать вид графика под вопрос
  • записать анализ цепочкой методов: assign, query, pipe
  • объяснить, почему цикл по строкам — почти всегда не лучший выбор
Модуль 12

Итоговый проект «Год кофейни»

Весь путь аналитика на данных магазина: собрать таблицу из четырёх файлов, почистить и проверить — и ответить на вопросы владельца отчётом с графиками.

  1. мини-проектИтоговый проект: данныеСобрать рабочую таблицу магазина из четырёх файлов: заказы, справочник товаров, грязная выгрузка клиентов и журнал возвратов. Почистить, убрать дубли, соединить с проверками, посчитать выручку с учётом возвратов и прибыль, сверить итог.25 мин
  2. мини-проектИтоговый проект: отчётОтчёт о годе «Кофейной лавки» по собранной таблице: динамика по месяцам, прибыль и возвраты по категориям, города и средний чек, сводная «категории × города», сегменты и лучшие покупатели, графики и выводы.25 мин
После модуля вы умеете
  • собрать рабочую таблицу из нескольких «сырых» файлов: очистка, соединение, проверки
  • посчитать выручку с учётом возвратов, прибыль и маржу по месяцам, категориям, городам и сегментам
  • оформить результат сводными таблицами, графиком и выводами