Pizza city

Данные о продажах пиццерии 🍕

Как рекомендовано в разделе «Структура учебного проекта», создадим учебный проект для работы с данными о продажах пиццерии PizzaCity. В общей папке deproschool создадим подпапку pizzacity, в которой будут храниться все учебные материалы и данные по этому разделу.

Скачивание данных

Давай начнём с простого упражнения по чтению данных из csv-файла. Скачай файл с данными о продажах пиццерии и сохрани его в папку deproschool/pizzacity.

Скачать pizzasales.csv

В итоге у тебя должна получиться такая структура папок:

deproschool
pizzacity
pizzasales.csv

В Visual Studio Code (или другом IDE) открой общую папку deproschool, т. е. открой проект.

В файле pizzasales.csv лежат такие простые игрушечные данные:

PizzaNumber of sales
Pepperoni120
Margherita80
BBQ100

Прочитать данные из csv

Создай скрипт. Внутри pizzacity заведи файл read_csv.py.

В итоге у тебя должна получиться такая структура проекта:

deproschool
pizzacity
pizzasales.csv
read_csv.py

Мы начнём с базового Python и стандартного модуля csv. Это простой скрипт, чтобы убедиться, что "есть контакт" с файлом и мы можем его прочитать. В файле read_csv.py напиши следующий код:

deproschool/pizzacity/read_csv.py
import csv
 
with open("pizzasales.csv", newline="", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(f"{row['Pizza']}: {row['Number of sales']} продаж")
💡

⚠️ На компьютере должен быть установлен Python 3.x и доступен в терминале командой python или python3.

Запусти код. В терминале выполни python read_csv.py (или python3 read_csv.py, если в системе одновременно установлены Python 2 и 3). Если всё сделано верно, увидишь список пицц и количество продаж. Это хорошая проверка: путь к файлу указан правильно, код умеет читать данные строка за строкой. Чем проще шаги, тем легче отлавливать ошибки.

💡

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

🎉

Если в терминале видишь такой вывод:

Pepperoni: 120 продаж
Margherita: 80 продаж
BBQ: 100 продаж

Поздравляю - теперь ты умеешь читать CSV!

Найдём самую популярную пиццу

Как читать файл знаем, теперь извлечём инсайт (ценное знание или вывод). Создай рядом новый скрипт top_pizza.py, который покажет самую продаваемую пиццу.

Должна получиться такая структура:

deproschool
pizzacity
pizzasales.csv
read_csv.py
top_pizza.py
deproschool/pizzacity/top_pizza.py
import csv
 
with open("pizzasales.csv", newline="", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    top_item = max(reader, key=lambda row: int(row["Number of sales"]))
 
print(f"Хит продаж — {top_item['Pizza']} ({top_item['Number of sales']} продаж)")

max с параметром key ищет строку с наибольшим числом продаж. Важно привести значение к int, иначе строки сравниваются лексикографически.

🏆

Если терминал выводит строку вида:

Хит продаж — Pepperoni (120 продаж)

Поздравляю: теперь владелец пиццерии знает, какие ингредиенты закупать в первую очередь. Таким образом, ты помог бизнесу принимать решения на основе данных. Вот в чем состоит ценность работы дата инженера! Это игрушечный пример, но примерная логика работы с реальными данными такая же. Помогли бизнесу, получили денежку - все счастливы!