Бран · продюсер «Хроник Пограничья»
Финансисты прислали мне выгрузку покупок в CSV и сказали: «открой в питоне, там удобнее». Ты же всё делаешь на SQL. Зачем тебе ещё один язык?
В прошлом уроке ты прочитал CSV средствами Python, отобрал покупки и собрал небольшой отчёт. Переменные, списки, словари, условия и функции больше не скрываются за незнакомыми знаками. Теперь возьмём pandas: библиотека хранит целую таблицу и применяет операцию сразу к столбцу. Сегодня загрузим выгрузку и повторим знакомый отбор без ручного цикла.
Склад и верстак
База данных похожа на большой склад. SQL это погрузчик: быстро находит нужные коробки среди миллионов, считает их и складывает в стопки. Но тонкую работу на складе не делают. Коробку несут на верстак, где под рукой инструменты: статистика, графики, склейка с файлом от финансистов.
Основы Python у тебя уже есть. Дальше учим не язык, а библиотеки под задачи аналитика:
- pandas: таблицы в памяти, их фильтрация, группировка и склейка;
- matplotlib и seaborn: графики, о них отдельный урок;
- scipy: статистические тесты, ими закроем A/B-тест в уроке про статистику на Python.
Правило разделения труда простое. Что можно посчитать в базе, считай в базе: она быстрее, и данные не надо тащить по сети. В Python приезжает уже небольшой результат запроса, тысячи строк, а не миллионы.
Jupyter: код и ответ на одной странице
Работай в Jupyter-блокноте, который ты настроил в уроке про первый запуск. Если pandas ещё не установлен, останови Jupyter и выполни python -m pip install pandas в терминале с активным окружением курса. Затем снова запусти python -m jupyter lab и выбери ядро этого окружения.
Перед отправкой отчёта перезапусти ядро и выполни все ячейки сверху вниз. Встроенные задачи устроены иначе: ты пишешь функцию в solution.py, а проверка каждый раз запускает её в свежем процессе Python. Как передавать аргументы и возвращать результат, ты уже разобрал в уроке про функции.
DataFrame: таблица в памяти
Таблица в pandas называется DataFrame. Столбцы у неё именованные, как у результата SQL-запроса, только живёт она в памяти, и её можно крутить дальше. Отдельный столбец называется Series.
Финансисты выгрузили все покупки «Хроник» в purchases.csv: те же столбцы, что в таблице purchases. Открываем:
import pandas as pd
df = pd.read_csv("purchases.csv")
df.head(3)
id player_id offer_id platform amount_rub status receipt_id created_at
0 1 5 2 android 499.0 paid and-d3a1049244b3 2026-01-06 09:52:49+00
1 2 34 12 ios 199.0 paid ios-db23380eade5 2026-01-06 13:32:13+00
2 3 34 4 ios 1990.0 paid ios-4bab244cfc6d 2026-01-07 05:14:28+00
head показывает первые строки, как LIMIT 3. Слева от данных стоит индекс: номера строк, которые pandas проставил сам. df.shape возвращает (1250, 8): 1250 строк и 8 столбцов, ровно столько покупок мы насчитали в уроке про агрегаты.
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.