
ЧТО МЫ ЕДИМ?
Задавались ли вы вопросом: «Что же едят другие люди?» и «Как выглядит их продуктовая корзина?».
Проходя по супермаркетам, я постоянно замечаю, как сильно отличаются содержимое тележек и подходы людей к покупке продуктов. В одной корзине — десерты, батончики и лимонад, а в другой — куриная грудка, листья салата и пакеты гречки.
Именно такие контрасты заставили меня задуматься о том, как формируются пищевые привычки, какие товары люди выбирают чаще и как же влияют на их решения.
Эта тема оказалась актуальной не только с бытовой точки зрения, но и с позиции анализа потребительского поведения: подобные данные помогают понять тенденции питания, интерес к полезной еде и популярность определённых продуктов.
Данные оказались достаточно разноплановыми, по этой причине в работе были использованы разные форматы графиков.
КРУГОВАЯ ДИАГРАММА
ГИСТОРГАММА
СТОЛБЧАТАЯ ДИАГРАММА
ТЕПЛОВАЯ КАРТА
ЛИНЕЙНЫЙ ГРАФИК
Цветовая палитра проекта
В цветовой палитре, цвета, что мы обычно видим в продуктовой корзине. Яркие фрукты и овощи для поддержания здорового питания.
Красный в качестве акцентного, пастельный в качестве фонового и дополнительные зелёные оттенки.
[»#386641», «#6a994e», «#a7c957», «#f2e8cf», «#bc4749»]
! pip install fpdf --quiet
import os
(проверьте слева во вкладке Files!) CSV_NAME = «Retail_Transactions_Dataset.csv» # ← переименуйте, если у вас другое имя
Папка для работы target_dir = «/content/retail» os.makedirs (target_dir, exist_ok=True)
if os.path.exists (CSV_NAME): os.replace (CSV_NAME, os.path.join (target_dir, CSV_NAME)) print («CSV найден и перемещён в:», target_dir) else: print («CSV-файл не найден. Проверьте имя файла в Files слева.»)
print («Файлы в папке:», os.listdir (target_dir))
Итак, первым делом я загрузила необходимые файлы для работы и создала директории для их хранения, теперь можно приступать к созданию самих таблиц
ТОП-10 товаров
Какие товары люди чаще всего покупают? Среди всех категорий лидерами оказались, на удивление: мороженное, мыло, джем и зубная паста.
Расшифровка значений: toothpaste = зубная паста Ice Cream = мороженное Soap = мыло Jam = джем Orange = сок Sode = газировка Deodorant = дезодорант Cleaning Rags = Чистящие салфетки Air Freshener = Освежитель воздуха Peanut Butter = Ореховое (арахисовое) масло
Столбчатая диаграмма
plt.figure (figsize=(10,6)) sns.barplot (x=top_products.values, y=top_products.index, palette=palette) plt.title («ТОП-10 наиболее частых товаров», fontsize=14) plt.xlabel («Частота», fontsize=12) plt.ylabel («Товар», fontsize=12) plt.tight_layout () plt.savefig (os.path.join (out_dir, «bar_top_products.png»), dpi=150) plt.close ()
Распределение стоимости покупок
Какие товары покупают люди мы узнали следующим шагом нужно узнать сколько же люди тратят денег за один поход в магазин.
Основные точки нагрузки оказались суммы около 50 $; 65 $; 75 $
Гистограмма стоимости покупок
plt.figure (figsize=(10,6)) sns.histplot (df['Total_Cost'], bins=25, kde=True, color=palette[0]) plt.title («Распределение стоимости покупок», fontsize=14) plt.xlabel («Стоимость покупки (₽)», fontsize=12) plt.ylabel («Количество транзакций», fontsize=12) plt.tight_layout () plt.savefig (os.path.join (out_dir, «hist_total_cost.png»), dpi=150) plt.close ()
Линейный график: Динамика продаж по месяцам
Когда же в основном люди ходят в магазин? Кто-то скажет в декабре — перед новым годом, кто-то скажет летом, в июне — в сезон отпусков.
Давайте же наглядно посмотрим какие месяца самые горячие на покупки и какие закономерности можно проследить от года к году.
Основные месяца с наибольшим объемом покупок вы можете заметить в летний сезон 2020, 2021, 2023 года. Оно и не удивительно, каникулы, отпуска, все отдыхают.
Что же касается месяцев с самыми низкими продажами, традиционно это январь, первый месяц года. Праздники прошли, все понакупили подарков, теперь как-то нужно дожить до следующей зарплаты доедая оставшиеся после нового года салаты.
Динамика продаж
datetime df['Date'] = pd.to_datetime (df['Date'], errors='coerce')
столбец Год-Месяц (YYYY-MM) df['YearMonth'] = df['Date'].dt.to_period ('M').astype (str)
продажи по месяцам (в общем) sales_by_month = df.groupby ('YearMonth')['Total_Cost'].sum ()
plt.figure (figsize=(12,6)) sns.lineplot ( x=sales_by_month.index, y=sales_by_month.values, marker="o», color="
plt.title («Динамика продаж по месяцам», fontsize=14) plt.xlabel («Месяц», fontsize=12) plt.ylabel («Суммарные продажи», fontsize=12) plt.xticks (rotation=45) plt.grid (alpha=0.3) plt.tight_layout ()
plt.savefig (os.path.join (out_dir, «line_sales_month.png»), dpi=150) plt.close ()
Распределение по типам магазинов
Круговая диаграмма
store_counts = df['Store_Type'].value_counts () plt.figure (figsize=(8,8)) plt.pie ( store_counts.values, labels=store_counts.index, autopct='%1.1f%%', colors=palette, startangle=140 ) plt.title («Распределение по типам магазинов», fontsize=14) plt.savefig (os.path.join (out_dir, «pie_store_type.png»), dpi=150) plt.close ()
Корреляция числовых признаков
Взаимосвязаны ли показали между собой? Большинство из них, как показывает график не имеют связи, однако, можно проследить взаимосвязь между количеством купленных товаров и стоимостью покупки.
Тепловая карта корреляций
corr = df[['Total_Cost', 'Total_Items', 'Discount_Flag', 'Year']].corr (method='spearman') plt.figure (figsize=(8,6)) sns.heatmap (corr, annot=True, cmap="YlGnBu») plt.title («Корреляции числовых признаков», fontsize=14) plt.tight_layout () plt.savefig (os.path.join (out_dir, «heat_corr.png»), dpi=150) plt.close ()
Ссылки
Датасет: https://www.kaggle.com/datasets/prasad22/retail-transactions-dataset?resource=download
ИИ: ReCraft — генерация обложки
Create a palette — цветовая палитра