Раздел 42 · Аналитика данных с нуля

Значения Python: числа, текст и первый отчёт

junior~25 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Бран · продюсер «Хроник Пограничья»

Блокнот открылся. Для проверки дам маленькую сводку: 120 игроков, 30 покупателей, 12 990 рублей выручки и 30 покупок. Покажи долю покупателей и средний чек так, чтобы завтра можно было заменить исходные числа.

Сводка учебная. Покупателей и покупок в ней поровну, по 30, но это разные величины: в реальных данных один покупатель может сделать несколько покупок.

В предыдущем уроке ты запускал арифметику и сохранял блокнот. Теперь запусти в новой ячейке:

players = 120
buyers = 30
print(buyers / players * 100)

Результат 25.0: покупателями стали 25% игроков из учебной сводки. В отличие от записи 30 / 120 * 100, здесь видно, что означает каждое число.

Имя хранит значение, а не формулу

В строке players = 120 знак = присваивает имени players значение справа. Имя позволяет обратиться к этому значению позже. Это переменная.

Читай присваивание справа налево: сначала вычисли правую часть, затем свяжи результат с именем слева. Это не равенство из школьной алгебры и не сравнение из SQL.

Имена пиши без пробелов. Для нескольких слов используй подчёркивание: revenue_rub, conversion_pct. Цифра может быть внутри имени, но не в начале. buyers и Buyers разные имена: регистр букв важен.

Проверь в отдельной ячейке:

players = 120
buyers = 30
conversion_pct = buyers / players * 100
buyers = 24
print(conversion_pct)

Он всё ещё напечатает 25.0. Python запомнил результат вычисления, а сама формула не пересчитывается. Если после изменения buyers снова выполнить строку conversion_pct = buyers / players * 100, получится 20.0.

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

Пять видов значений на столе аналитика

Запусти этот пример целиком:

purchases = 30
revenue_rub = 12990.0
game = "Хроники Пограничья"
is_complete = True
refund_rub = None
print(purchases, revenue_rub, game, is_complete, refund_rub)

Вывод:

30 12990.0 Хроники Пограничья True None

В print можно передать несколько значений через запятую: по умолчанию Python разделит их пробелом и завершит строку переводом строки. Запятая здесь разделяет то, что печатается; это не десятичный разделитель.

ЗаписьТипЧто означает
30intЦелое число, например число покупок
12990.0floatЧисло с дробной частью; десятичный разделитель в коде точка
"Хроники Пограничья"strТекстовая строка в прямых кавычках
True, FalseboolОтвет «да» или «нет», например завершена ли выгрузка
NoneNoneTypeЗначения нет: оно неизвестно или его не прислали

True, False и None пишутся с заглавной буквы и без кавычек. "None" уже текст, не отсутствие значения.

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

Чтобы спросить Python о типе, используй встроенную команду type со значением в скобках:

print(type(30))
print(type("30"))
print(type(None))

Она выведет <class 'int'>, <class 'str'> и <class 'NoneType'>, по строке на результат. Слово class входит в стандартный ответ Python, разбираться в классах для этого не нужно.

Один знак присваивает, два сравнивают

Запусти в новой ячейке:

purchases = 30
print(purchases == 30)
print(purchases == 0)

Получится True, затем False. Два знака == сравнивают значения и дают логический ответ. Один = присваивает значение имени.

В SQL сравнивают через =, поэтому рука может набрать привычный знак. В Python purchases = 0 заменит число покупок нулём, а не спросит, равно ли оно нулю.

Для текста правило то же: "paid" == "paid" даёт True, а "paid" == "refunded" даёт False. Обе стороны сравнения остаются в кавычках, потому что это текст.

урок из курса

Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.