Панды анализируют и очищают данные продаж с помощью Python и Pandas.

EDA в открытом доступе (Часть 2): Подробный анализ продукта и анализ временных рядов в Pandas

Узнайте, как анализировать эффективность продукта, извлекать данные из временных рядов и выявлять ключевые сезонные тенденции в ваших данных о продажах.

Делиться

Исследовательский анализ данных с использованием Pandas

Привет всем! Добро пожаловать обратно в серию «EDA на публике»! Это вторая часть серии; если вы еще не читали первую часть, прочитайте ее здесь. Вот краткий обзор того, чего мы достигли.

EDA в открытом доступе (Часть 1): Очистка и анализ данных о продажах с помощью Pandas

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

  • Для ускорения обработки данных была проведена выборочная проверка.
  • Исправлены отсутствующие значения и стандартизированы текстовые записи (например, «EIRE» заменено на «Ireland»).
  • Отфильтровал весь информационный шум — возвраты, отмены и транзакции с нулевой ценой.
  • Разработана наша самая важная функция: столбец «Доходы».
  • Мы получили первое важное бизнес-предложение: 10 стран с самым высоким доходом .

Теперь у нас есть чистый, готовый к использованию в целях получения прибыли DataFrame Pandas, который можно анализировать и получать ценные аналитические данные! К концу этой серии я хочу освоить разведочный анализ данных с помощью Pandas. Если вы увлекаетесь анализом данных, смело следите за обновлениями.

Теперь мы переключаем наше внимание на предоставление действительно эффективной бизнес-аналитики для NovaShop. Наша главная цель во второй части — ответить на фундаментальные вопросы: какие продукты показывают наилучшие результаты и когда лучше всего их продавать ?

В этой части речь пойдёт об анализе с использованием мощных методов агрегирования Pandas (.groupby()) и инженерии признаков с помощью столбца datetime (.dt accessor). Мы разделим наш анализ на две ключевые области:

  • Подробный анализ продукта: выявление продуктов, которые продаются лучше всего, и тех, которые приносят наибольшую прибыль.
  • Анализ динамики продаж (временные ряды): выявление сезонности продаж (пики в течение месяца) и операционных тенденций (самый загруженный час дня).

Итак, приступим.

Загрузка очищенных данных

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

df.to_csv('online_retail_clean.csv', index=False)

Теперь я могу создать новый проект и начать все заново.

При загрузке CSV-файлов, содержащих столбцы с датами, я стараюсь использовать аргумент parse_dates в функции pd.read_csv(). Это избавляет меня от необходимости вручную преобразовывать тип столбца позже, гарантируя корректность данных о датах с самого начала.

import pandas as pd df = pd.read_csv('online_retail_clean.csv', parse_dates=['InvoiceDate']) print(f»Очищенные данные успешно загружены. Всего строк: {len(df)}»)

Выход:

Очищенные данные успешно загружены. Всего строк: 52933

Подробный анализ продукта: кто же на самом деле приносит прибыль?

После загрузки очищенных данных перейдем непосредственно к анализу эффективности продукта. Продукты можно считать «бестселлерами» двумя способами: по объему продаж (количество проданных единиц) или по стоимости (полученная выручка).

Аналитический обзор 2: 10 самых продаваемых книг (по количеству экземпляров)

Список количества товаров позволяет определить, какие товары пользуются популярностью и высоким спросом, даже если их цена низкая. Это важно для складского учета и управления запасами.

Мы сгруппируем данные по описанию товара, суммируем количество и отсортируем по убыванию.

# Топ-10 бестселлеров (по количеству) df.groupby('Description')['Quantity'].sum().sort_values(ascending=False).head(10)

Выход:

Описание: Средняя керамическая банка для хранения 74698 Планеры времен Второй мировой войны, различные дизайны 9419 Металлическая вывеска «Джин + Тоник» 5016 Шелковый веер разных цветов 4684 Большая сумка красного цвета Retrospot 4671 Набор из 72 формочек для торта Retrospot 3561 Мини-набор красок винтажный 3285 Украшение в виде птицы разных цветов 2783 Кошелек-кольцо из брокады 2525 Держатель для попкорна 2508 Название: Количество, тип данных: int64

Аналитический вывод 3: 10 основных источников дохода (настоящие источники прибыли)

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

Мы следуем тому же процессу, но на этот раз агрегируем данные по столбцу «Доход», который мы разработали в Части 1.

# Топ-10 факторов, приносящих доход (настоящие источники прибыли) df.groupby('Description')['Revenue'].sum().sort_values(ascending=False).head(10)

Выход:

Описание: Средняя керамическая банка для хранения 77785.74, стоимость доставки Dotcom 18456.13, трехъярусная подставка для торта Regency 15093.38, комиссия Amazon 13541.33, праздничная гирлянда 9491.60, металлическая вывеска «Джин + Тоник» 9480.51, большой красный ретро-пакет 8996.65, инструкция 8966.96, светильники «Чили» 8395.20, стоимость доставки 7194.51. Название: Revenue, dtype: float64

Обсуждение: Что эти списки говорят NovaShop

Именно здесь по-настоящему проявляется мощь EDA, поскольку эти два списка рассказывают совершенно разную историю:

  • Звездный продукт: «СРЕДНЯЯ КЕРАМИЧЕСКАЯ БАНКА ДЛЯ ХРАНЕНИЯ» явно лидирует, значительно опережая оба списка. Она пользуется большим спросом и имеет высокую ценность. Этот товар должен стать основным направлением деятельности NovaShop в плане управления запасами, маркетинга и расширения.
  • Удивительный источник дохода: изучая данные, я заметил такие пункты, как «Почтовые расходы DOTCOM», «Комиссия Amazon», «Ручная обработка» и «Почтовые расходы». Это не сами товары — это сервисные сборы и ручные корректировки. Тем не менее, в совокупности они приносят почти 48 000 фунтов стерлингов дохода. NovaShop следует перепроверить, учитываются ли эти сборы в валовой прибыли. Это легко упустить из виду, но это может быть незаметный и значимый источник дохода, скрывающийся на виду.
  • Ценные материальные товары: такие товары, как «Трехъярусная подставка для торта REGENCY» и «Подсветка для перца чили», попадают в список выручки, но не в список количества. Это говорит о том, что это дорогостоящие товары, которые вносят значительный вклад в общий денежный поток, и поэтому заслуживают целенаправленных маркетинговых усилий.

Теперь у нас есть полное представление о том, что NovaShop продает лучше всего. Пора выяснить, когда!

Подготовка к анализу временных рядов: разработка признаков.

Мы знаем, что хорошо продавалось. Теперь давайте выясним, когда продажи достигают пика. Наша цель — разбить столбец InvoiceDate на компоненты, которые позволят нам группировать и анализировать продажи по году, месяцу, дню и даже часу.

Это классический приём инженерии функций. Поскольку мы уже убедились, что InvoiceDate является корректным объектом Pandas datetime (благодаря parse_dates на этапе загрузки!), мы можем использовать чрезвычайно полезный аксессор .dt.

Извлечение временных компонентов

Для понимания сезонности (ежемесячно) и операционной эффективности (почасово) мы создадим четыре новых столбца.

  • Год — Для долгосрочных сравнений
  • Месяц — для определения сезонных пиков (например, пик в 4 квартале).
  • DayName — Чтобы найти самый загруженный день недели.
  • Час — Для определения пиковых часов работы.

Давайте создадим эти столбцы:

print(“n — — Извлечение признаков временных рядов — -”) # Извлечение года, месяца, названия дня и часа из столбца InvoiceDate df['Year'] = df['InvoiceDate'].dt.year df['Month'] = df['InvoiceDate'].dt.month df['DayName'] = df['InvoiceDate'].dt.day_name() df['Hour'] = df['InvoiceDate'].dt.hour print(“Добавлены новые признаки времени: год, месяц, название дня, час.”) print(df[['InvoiceDate', 'Year', 'Month', 'DayName', 'Hour']].head())

Выход:

— Извлечение признаков временных рядов — Добавлены новые признаки времени: Год, Месяц, Название дня, Час. Дата счета Год Месяц Название дня Час 0 2011-06-01 12:05:00 2011 6 Среда 12 1 2011-05-27 17:14:00 2011 5 Пятница 17 2 2011-04-21 17:05:00 2011 4 Четверг 17 3 2011-11-16 10:39:00 2011 11 Среда 10 4 2011-03-10 08:40:00 2011 3 Четверг 8

Отлично! В следующем разделе мы можем сразу перейти к построению карты моделей продаж.

Анализ закономерностей продаж (анализ временных рядов)

Теперь, когда у нас есть функции, учитывающие время, мы можем задавать вопросы и получать ответы о том, когда происходят продажи. Мы начнем с крупных объемов (месячные тренды) и будем углубляться в более мелкие детали (почасовые тренды).

Анализ 4: Тенденции продаж по месяцам (сезонность)

Агрегирование данных за месяц имеет решающее значение для выявления сезонности — предсказуемой закономерности продаж, повторяющейся каждый год. Эти данные используются для финансового прогнозирования и планирования уровня запасов на пиковый сезон.

Мы сгруппируем данные по столбцу «Месяц» и рассчитаем общую выручку для каждого месяца.

print(“n — — Анализ 4: Тенденции продаж по месяцам (сезонность) — -”) # Группировка по месяцам и суммирование выручки monthly_revenue = df.groupby('Month')['Revenue'].sum().sort_values(ascending=False) # Вывод результатов, которые должны показывать сезонные пики print(monthly_revenue)

Выход:

— Анализ 4: Тенденции продаж по месяцам (сезонность) — Месяц 11 143576.360 1 142013.420 12 133178.980 10 119533.540 9 103929.420 3 72968.270 8 71302.890 5 70424.510 6 68722.520 7 68713.831 4 51882.010 2 50178.730 Имя: Доход, тип данных: float64

Интерпретация: Масштабный сюрприз 4-го квартала и января

Данные ясно показывают, что продажи NovaShop в значительной степени смещены в сторону конца года, подтверждая типичный для розничной торговли пик продаж в четвертом квартале (октябрь, ноябрь, декабрь) .

  • Пик сезона: Ноябрь — пиковый месяц с небольшим отрывом, за ним следует декабрь. Сейчас самое время запастись средними керамическими банками для хранения и запустить целевую рекламу.
  • Январский всплеск: Январь – второй по величине месяц! Это отличный показатель для NovaShop. Он говорит о том, что покупатели, возможно, используют деньги, подаренные на Рождество, или пользуются послепраздничными распродажами. Этот период не следует рассматривать как спад, а как вторичную возможность для увеличения объёма продаж.
  • Низкий сезон: февраль и апрель — самые слабые месяцы, что позволяет NovaShop планировать сокращение штатных сотрудников и маркетинговых бюджетов в эти периоды.

Анализ 5: Тенденции продаж по дням недели и часам (оперативное планирование)

В то время как сезонность связана с финансами и запасами, ежедневные и почасовые тенденции касаются операционной деятельности . NovaShop может использовать это для планирования работы складского персонала, оптимизации рекламных расходов и определения времени проведения email-кампаний.
Здесь мы выполним две отдельные агрегации: одну по дню недели и одну по часу дня.

Доходы по дням недели

# 1. Продажи по дням недели daily_revenue = df.groupby('DayName')['Revenue'].sum() print(“n — — Доход по дням недели — -”) print(daily_revenue)

Выход:

— Доходы по дням недели — Название дня Пятница 163861.320 Понедельник 171026.230 Воскресенье 83125.890 Четверг 219342.980 Вторник 282796.741 Среда 176271.320 Название: Доход, тип данных: float64

Интерпретация: Вторник — день силы.

Данные выявляют четкую и действенную закономерность в течение рабочей недели:

  • Пик продаж : Вторник является самым загруженным днем недели, принося почти на 30% больше выручки, чем следующий по загруженности день, четверг. Это идеальный день для запуска новых продуктов или проведения масштабных распродаж.
  • Дни спада: Как и следовало ожидать, продажи резко падают в воскресенье. NovaShop может посчитать этот день малоприоритетным для email-маркетинга или укомплектования штата службы поддержки клиентов.
  • Отсутствующий день: В нашем наборе данных отсутствуют транзакции за субботу (или, возможно, за весь набор данных, что часто встречается в наборах данных B2B).

Доход по часам суток

# 2. Продажи по часам дня hourly_revenue = df.groupby('Hour')['Revenue'].sum().sort_index() print(“n — — Доход по часам дня — -”) print(hourly_revenue)

Выход:

— Доход по часам дня — Час 7 2830.910 8 26597.800 9 76768.750 10 209809.971 11 115233.600 12 142474.460 13 130348.290 14 119241.520 15 145178.980 16 70620.550 17 36148.030 18 14022.790 19 4397.130 20 2751.700

Интерпретация: Утренний бум

Почасовые данные напрямую указывают на оперативные потребности:

  • Пик продаж: в 10 утра (10-й час) продажи резко возрастают, почти вдвое превышая выручку за следующие несколько часов. Это оптимальное время для запуска email-маркетинговых и социальных медиа-кампаний компанией NovaShop.
  • Устойчивая активность: Продажи остаются высокими с 11:00 до 15:00, что указывает на активный период покупок в полдень и после обеда.
  • Конец дня: активность резко падает после 16:00, а вечером (с 19:00 и далее) выручка практически не увеличивается. Это указывает на то, что основная клиентская база NovaShop — это клиенты, которые совершают покупки за столиками в традиционные рабочие часы.

Заключение: Подготовка к сегментации клиентов

Мы официально завершили масштабную разработку EDA! Мы знаем, что продается лучше всего (керамическая банка и комиссионные сборы), где продажи наиболее высоки (Великобритания) и когда наступает пик продаж (4 квартал, вторники и 10 утра).

Однако нам по-прежнему не хватает самой ценной части головоломки: «Кто» . Лучшие компании не просто знают, что продается; они знают, кто их самые ценные клиенты и как их удержать.

В третьей части мы углубимся в самую продвинутую аналитическую методику этой серии: сегментацию клиентов по RFM (давность, частота, денежная стоимость). Это позволит нам классифицировать клиентов по уровням, таким как «Постоянные клиенты», «Лояльные клиенты» и «Клиенты, находящиеся под угрозой», что даст NovaShop реальную дорожную карту для персонализированного маркетинга.

Надеюсь, эта статья оказалась для вас полезной. Не стесняйтесь поздороваться со мной на любой из этих платформ. Я очень ценю ваши отзывы.

Середина

LinkedIn

Твиттер

YouTube

Источник: towardsdatascience.com

✅ Найденные теги: EDA, Pandas, Анализ, Временные Ряды, новости, Продукт

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Серверный шкаф Qunnect Carina в офисе с чертежами на досках, современный дизайн.
Текст на изображении: "Программисты всё?" на черном фоне.
ideipro logotyp
Диаграмма базы данных для клона Slack с таблицами пользователей, сообщений и каналов.
ideipro logotyp
Человек работает за ноутбуком, презентация платформы GigaChat Enterprise для бизнеса.
ideipro logotyp
График загрузок мобильных приложений Claude и ChatGPT в США за февраль 2026 года.
Папа призывает священников не использовать ИИ для проповедей и лайков в TikTok.
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых