Пролог — «Второй сигнал»

Первая ячейка: Python прямо в браузере

15 мин
Чему научишься
  • запускать Python прямо на странице урока — ничего не устанавливая
  • заводить переменные и читать код построчно: строка → что сделал Python → что стало в памяти
  • печатать результат командой print
  • считать оборот, и остаток — и честно называть числа своими именами

Инструмент дознавателя

SQL достаёт данные из базы. Python помогает обрабатывать их дальше: склеивать таблицы, считать метрики, рисовать графики, искать аномалии. Часть этого умеет и сам SQL — инструменты пересекаются, и это нормально.

Здесь Python работает прямо в браузере: код исполняется на той же машине, где открыта эта страница. Ничего устанавливать не нужно.

В моём архиве завёлся медведь. Панда, если точнее. Привыкай — она будет таскать тебе таблицы. Но не сегодня. — КВЕРИ

Курсант запускает ячейку на консоли, пока голограмма показывает последовательное выполнение трёх команд, изменение памяти и вывод результата.
Код читается по одной схеме: строка → что сделал Python → что стало в памяти → что напечаталось.

В этом уроке мы возьмём за основу три вещи: переменные, арифметику и print. Всё остальное — списки, циклы, устройство функций — в главе 2, и не раньше, чем эти три станут привычными.

Читать код будем по одной схеме, и её стоит запомнить:

строка кода → что сделал Python → что стало в памяти → что напечаталось

Начнём с ячейки из трёх строк. Нажми Выполнить.

Пример 1 из пяти. Запусти как есть.
python · pandas

Что произошло, строка за строкой

Python исполняет этот код сверху вниз, по одной строке за раз: выполняет первую строку, затем вторую, потом третью.

Строка 1: orders = 1284

  • что сделал Python: запомнил число 1284 под именем orders;
  • что стало в памяти: orders → 1284;
  • что напечаталось: ничего. Присваивание само по себе ничего не выводит на экран.

Знак = здесь — не равенство из математики. Читать его можно так: «возьми значение справа и запомни под именем слева». Такое имя, связанное со значением, называется переменной.

Строка 2: print(orders)

  • что сделал Python: посмотрел, какое значение сейчас связано с именем orders, и передал его в print;
  • что стало в памяти: ничего не изменилось — print только читает значение;
  • что напечаталось: 1284.

Строка 3: print('Заказов за 14 марта:', orders)

  • что сделал Python: передал в print два значения — сначала текст в кавычках, потом значение переменной;
  • что напечаталось: Заказов за 14 марта: 1284.

Когда в print передают несколько значений через запятую, по умолчанию между ними появляется пробел.

Про кавычки: текст в кавычках Python воспринимает как текстовое значение, а не как имя переменной. Поэтому print(orders) печатает 1284, а print('orders') напечатал бы слово orders. Это различие важно: без кавычек Python ищет значение переменной, а в кавычках берёт сам текст.

printкоманда вывода: всё, что ей передали в скобках, она показывает на экране. Строго говоря, это функция, и что такое функция — в главе 2; пока относись к ней как к кнопке «покажи мне».

И последнее: переменная, созданная в первой строке, уже доступна во всех следующих строках этого запуска. Поэтому сначала можно сохранить исходные данные, а ниже — использовать их в расчётах и выводе результата.

Переменная — это имя для ячейки памятикодпамять Pythonorders = 1284avg_check = 730revenue = orders * avg_checkorders1284avg_check730revenue937320в третьей строке Python подставляет значения: 1284 × 730имя → значение; знак = означает «положи в ячейку»
Память Python можно представить как таблицу: имя слева, текущее значение справа. Присваивание создаёт или меняет такую связь, а print читает значение и выводит его на экран.
Пример 2. Что будет, если присвоить переменной новое значение?
python · pandas

Переменная — бирка, а не коробка

Второе присваивание не создало вторую переменную. Оно перевесило бирку orders на новое число:

после строки 1:   orders → 1284
после строки 4:   orders → 1301     (старое значение потеряно)

После этого через orders уже не добраться до прежнего значения 1284. Если оно ещё нужно, его надо заранее сохранить под другим именем: orders_yesterday = 1284, orders_today = 1301.

Поэтому имена переменных важнее, чем кажется в первый день: a, b, x1 через неделю не расшифрует даже автор, а orders_today читается само. Правила в этом курсе простые: латиница, цифры и подчёркивания; начинать с цифры нельзя; пробелов нет — отсюда avg_check, а не avg check.

Теперь посчитаем что-нибудь осмысленное — и сразу на примере, где легко соврать самому себе.

Оборот — это не выручка

Средний чек — средняя сумма одного заказа. Умножим его на число заказов:

1284 заказа × 730 ₽ = 937 320 ₽

Что это за число? Соблазн назвать его «выручкой» огромен — и он же первая терминологическая ловушка курса.

937 320 ₽ — это оборот, он же GMV (gross merchandise value): суммарная стоимость товаров в заказах, прошедших через площадку. Это не значит, что все 937 320 ₽ стали доходом Котомаркета: основная часть стоимости товаров предназначена продавцам.

Котомаркет — маркетплейс: он не владеет кормом и лежанками, а сводит продавцов с покупателями. Его собственная выручка может складываться из комиссии с заказов, рекламы, платной доставки и других услуг. В нашем упрощённом примере считаем только комиссию. При ставке 12% выручка от комиссии за этот день:

937 320 ₽ × 0.12 ≈ 112 478 ₽

GMV больше комиссионной выручки примерно в 8,3 раза. Перепутать эти числа в отчёте — не оговорка, а другой смысл показателя.

ЧислоЧто означаетВ нашем дне
Оборот (GMV)стоимость товаров в заказах937 320 ₽
Выручка от комиссиисколько получила площадка при комиссии 12%≈ 112 478 ₽
Прибыльчто осталось от выручки после расходовещё меньше, и это отдельный разговор

У обычного магазина, который продаёт собственный товар, стоимость проданных товаров обычно входит в его выручку целиком. У маркетплейса-посредника GMV и собственная выручка площадки — разные показатели.

Л., запись №8: На совете директоров показали слайд „выручка 2.3 млн в день“. Это был GMV. Комиссия — 280 тысяч, и на неё живёт вся компания. Никто не поправил. Я поправила. Меня попросили не портить настроение.

Пример 3. Оборот и выручка площадки. Запусти, потом поменяй комиссию с 0.12 на 0.05 и посмотри, как изменится вторая строка.
python · pandas

Арифметика и комментарии

Комментарии. Всё, что стоит после # до конца строки, Python пропускает — это записка для людей. В commission_rate = 0.12 # комиссия площадки, 12% имя переменной говорит, что хранится ставка комиссии, а комментарий поясняет, как читать число 0.12: это 12%. Обе подписи бесплатны и обе спасают через месяц.

Арифметика. Четыре знака покрывают почти всё, что нужно аналитику:

ЗнакДействиеПример
*умножение1284 * 730937320
/деление75 / 10000.075
+сложение1284 + 171301
-вычитание200 - 17183

Порядок действий обычный, школьный: сначала * и /, потом + и -, скобки главнее всего. (1412 - 41) * 695 и 1412 - 41 * 695 — два очень разных числа.

Вычисление в присваивании. Строка gmv = orders * avg_check работает в два такта: Python сначала считает выражение справа (1284 * 730937320) и только потом вешает бирку gmv на результат. После этой строки gmv хранит уже вычисленное число, а не формулу: если следом изменить orders, значение gmv само не пересчитается.

round(...) округляет число до ближайшего целого: round(112478.4)112478.

Пример 4. Доля в процентах — из 1000 зашедших купили 75.
python · pandas
Пример 5. Остаток — сколько посылок доехало.
python · pandas

Три шаблона, которые ты уже знаешь

Пять ячеек — и у тебя в руках три базовых шаблона расчёта:

произведение:  gmv = orders * avg_check             'сколько всего'
доля:          conversion = buyers / visitors * 100  'какая часть'
остаток:       delivered = shipped - lost            'сколько осталось'

В главе 1 эти же операции ещё не раз пригодятся при расчёте метрик — изменятся переменные и смысл чисел.

Теперь задания. Работают они так: ты дописываешь код в ячейке и нажимаешь кнопку — система запустит твой код и проверит результат, а если он не сойдётся, покажет, что именно не так. Ошибиться не страшно: попыток сколько угодно, и подсказка рядом.

Практика: напиши код
Журнал Л. за 15 марта: 1412 заказов, средний чек 695 ₽. Замени заглушку 0 на формулу и посчитай оборот дня (GMV) в переменную gmv.
python · pandas
Практика: напиши код
Полный отчёт за 15 марта. Известно: 1412 заказов, средний чек 695 ₽, комиссия площадки 11%, за день в приложение зашли 20 400 человек; считай, что каждый заказ сделал отдельный посетитель. Посчитай три числа:
  • gmv — оборот за день;
  • revenue — выручку Котомаркета (комиссия с оборота);
  • conversion — конверсию в заказ, в процентах.
Заглушки в коде замени своими формулами.
python · pandas
Проверь себя
На маркетплейсе за день было 1284 заказа со средним чеком 730 ₽. Как правильно назвать число 937 320 ₽?
Главное из урока
  • Python здесь исполняется прямо в браузере — ставить ничего не нужно
  • Python читает код сверху вниз; имя = значение кладёт значение в память под биркой, повторное присваивание бирку перевешивает
  • присваивание молчит, print(...) печатает; текст в кавычках печатается буквально, имя без кавычек — своим значением
  • # начинает комментарий; в присваивании сначала считается правая часть, потом результат попадает в переменную
  • три шаблона расчёта: произведение («сколько всего»), доля («какая часть»), остаток («сколько осталось»)
  • оборот (GMV) = заказы × средний чек — это деньги покупателей; выручка маркетплейса — комиссия с оборота, и она в разы меньше

Пролог закрыт. Дальше — глава 1: DAU, , и первое дело из журнала Л.