Рубежный контроль №1 (весна 2025 года)¶
Тема: Методы обработки данных¶
Необходимо подготовить отчет по рубежному контролю и разместить его в Вашем репозитории. Вы можете использовать титульный лист, или в начале ноутбука в текстовой ячейке указать Ваши Ф.И.О. и группу.
Тема: Методы обработки данных.
Варианты заданий¶
| Номер варианта | Номер задачи №1 | Номер задачи №2 |
|---|---|---|
| 1 | 1 | 21 |
| 2 | 2 | 22 |
| ... | ... | ... |
| 22 | 7 | 33 |
Выбор варианта:
- Для групп ИУ5-21М, ИУ5-22М, ИУ5-23М, ИУ5-24М: номер в списке группы.
- Для групп ИУ5И-21М, ИУ5И-22М, ИУ5И-23М, ИУ5И-24М: 15 + номер в списке группы.
- Для группы ИУ5-25МВ: 20 + номер в списке группы.
Дополнительные требования по группам:
- ИУ5-21М, ИУ5И-21М: для пары произвольных колонок данных построить график "Диаграмма рассеяния".
- ИУ5-22М, ИУ5И-22М: для произвольной колонки данных построить гистограмму.
- ИУ5-23М, ИУ5И-23М: для произвольной колонки данных построить график "Ящик с усами (boxplot)".
- ИУ5-24М, ИУ5И-24М: для произвольной колонки данных построить график "Скрипичная диаграмма (violin plot)".
- ИУ5-25МВ: для произвольной колонки данных построить парные диаграммы (pairplot).
Условия выбора данных:
- Набор данных выбирается произвольно.
- Должен отличаться от лекционного примера.
- Должен соответствовать условиям задачи (например, содержать пропуски, если задача на их устранение).
Студент: Папин Алексей Владимирович
Группа: ИУ5Ц-21М
Описание набора данных¶
В работе используется набор данных Global E-Commerce Sales Dataset (2021–2024). Это синтетический датасет, имитирующий транзакции в сфере электронной коммерции. Он содержит 10 000 записей и 26 признаков, включая:
- Идентификаторы: ID заказа и клиента.
- Временные признаки: Дата, год, месяц, квартал и сезон.
- Географические данные: Регион и страна.
- Категориальные данные: Сегмент клиента, категория и подкатегория товара, метод доставки, способ оплаты и статус заказа.
- Количественные показатели: Цена за единицу, количество, скидка, выручка (
Revenue), себестоимость (Cost), прибыль (Profit) и маржинальность.
Данный набор данных позволяет проводить глубокий анализ эффективности продаж, исследовать зависимости между затратами и прибылью, а также практиковать методы машинного обучения.
Задачи:¶
- Задача №1: Построить график "Диаграмма рассеяния (scatter plot)" для пары произвольных колонок данных
- Задача №2: Кодирование категориального признака методом Target (Mean) Encoding
- Задача №22: Масштабирование числового признака по максимальному значению (MaxAbs Scaling)
Импорт библиотек и загрузка данных¶
Размер набора данных: (10000, 26) Первые 5 строк:
| Order_ID | Order_Date | Year | Month | Quarter | Season | Customer_ID | Customer_Gender | Customer_Segment | Region | ... | Discount | Revenue | Cost | Profit | Profit_Margin_% | Shipping_Cost | Shipping_Method | Shipping_Days | Payment_Method | Order_Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | ORD-000001 | 2023-01-18 | 2023 | 1 | Q1 | Winter | CUST-02791 | Male | New | North America | ... | 0.00 | 3642.80 | 2444.11 | 1198.69 | 32.91 | 2.25 | Economy | 4 | Google Pay | Delivered |
| 1 | ORD-000002 | 2023-11-13 | 2023 | 11 | Q4 | Fall | CUST-02763 | Female | Regular | North America | ... | 0.25 | 33.88 | 28.32 | 5.56 | 16.41 | 4.72 | Economy | 5 | Credit Card | Delivered |
| 2 | ORD-000003 | 2022-04-28 | 2022 | 4 | Q2 | Spring | CUST-05729 | Male | Regular | North America | ... | 0.00 | 241.30 | 161.41 | 79.89 | 33.11 | 13.28 | Standard | 8 | Credit Card | Processing |
| 3 | ORD-000004 | 2021-10-22 | 2021 | 10 | Q4 | Fall | CUST-06490 | Female | Regular | Asia | ... | 0.00 | 654.50 | 369.16 | 285.34 | 43.60 | 31.11 | Express | 16 | Google Pay | Processing |
| 4 | ORD-000005 | 2023-08-06 | 2023 | 8 | Q3 | Summer | CUST-07594 | Female | Premium | Europe | ... | 0.20 | 178.82 | 118.69 | 60.13 | 33.63 | 8.44 | Standard | 5 | Debit Card | Delivered |
5 rows × 26 columns
Информация о данных: <class 'pandas.core.frame.DataFrame'> RangeIndex: 10000 entries, 0 to 9999 Data columns (total 26 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Order_ID 10000 non-null object 1 Order_Date 10000 non-null object 2 Year 10000 non-null int64 3 Month 10000 non-null int64 4 Quarter 10000 non-null object 5 Season 10000 non-null object 6 Customer_ID 10000 non-null object 7 Customer_Gender 10000 non-null object 8 Customer_Segment 10000 non-null object 9 Region 10000 non-null object 10 Country 10000 non-null object 11 Category 10000 non-null object 12 Sub_Category 10000 non-null object 13 Product_Name 10000 non-null object 14 Unit_Price 10000 non-null float64 15 Quantity 10000 non-null int64 16 Discount 10000 non-null float64 17 Revenue 10000 non-null float64 18 Cost 10000 non-null float64 19 Profit 10000 non-null float64 20 Profit_Margin_% 10000 non-null float64 21 Shipping_Cost 10000 non-null float64 22 Shipping_Method 10000 non-null object 23 Shipping_Days 10000 non-null int64 24 Payment_Method 10000 non-null object 25 Order_Status 10000 non-null object dtypes: float64(7), int64(4), object(15) memory usage: 2.0+ MB Описательная статистика:
| Year | Month | Unit_Price | Quantity | Discount | Revenue | Cost | Profit | Profit_Margin_% | Shipping_Cost | Shipping_Days | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.00000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 |
| mean | 2022.756300 | 6.604300 | 236.307452 | 2.731300 | 0.17675 | 528.438770 | 384.674939 | 143.763831 | 23.648594 | 32.299889 | 11.436100 |
| std | 0.878628 | 3.406799 | 380.901351 | 2.038508 | 0.16167 | 1154.811538 | 828.069100 | 420.487992 | 21.496639 | 28.424003 | 5.347633 |
| min | 2021.000000 | 1.000000 | 10.010000 | 1.000000 | 0.00000 | 5.330000 | 4.850000 | -1572.900000 | -50.000000 | 2.000000 | 3.000000 |
| 25% | 2022.000000 | 4.000000 | 42.767500 | 1.000000 | 0.00000 | 67.227500 | 50.017500 | 9.007500 | 13.497500 | 8.260000 | 7.000000 |
| 50% | 2023.000000 | 7.000000 | 92.495000 | 2.000000 | 0.15000 | 164.600000 | 121.395000 | 34.745000 | 28.330000 | 20.300000 | 10.000000 |
| 75% | 2023.000000 | 10.000000 | 221.822500 | 4.000000 | 0.30000 | 469.952500 | 339.020000 | 118.475000 | 39.082500 | 50.362500 | 15.000000 |
| max | 2024.000000 | 12.000000 | 2497.760000 | 10.000000 | 0.50000 | 19966.500000 | 15729.670000 | 9144.150000 | 54.990000 | 99.990000 | 25.000000 |
Анализ описательной статистики¶
На основе полученных данных можно сделать следующие выводы:
Revenue (Выручка):
- Асимметрия: Среднее значение (528.44) значительно превышает медиану (164.60), что указывает на правостороннее смещение распределения.
- Выбросы: Максимальное значение (19 966.50) аномально велико по сравнению с 75-м процентилем (469.95). Это свидетельствует о наличии экстремальных заказов.
Profit (Прибыль):
- Убытки: Минимальное значение отрицательное (-1572.90), что говорит о наличии заказов с убытком.
- Выбросы: Максимальное значение (9144.15) многократно превышает 75-й процентиль (118.48), что также указывает на наличие выбросов.
- Разброс: Высокое стандартное отклонение (420.49) относительно медианы (34.75) подтверждает неоднородность данных.
Вывод: Наличие экстремальных значений в признаках Revenue и Profit требует проведения предобработки данных (удаления выбросов) для корректного построения графиков.
Предобработка данных: удаление выбросов¶
Проанализируем признаки Revenue (выручка) и Profit (прибыль) на наличие выбросов с помощью метода межквартильного размаха (IQR).
Обнаружение выбросов (метод IQR): Revenue: выбросов = 1177 из 10000 (11.8%) Границы: [-536.86, 1074.04] Profit: выбросов = 898 из 8823 (10.2%) Границы: [-100.85, 188.63]
Размер данных до обработки: (10000, 26) Размер данных после обработки: (7925, 26) Удалено строк: 2075 Описательная статистика после удаления выбросов:
| Revenue | Profit | |
|---|---|---|
| count | 7925.000000 | 7925.000000 |
| mean | 174.636753 | 38.089692 |
| std | 174.047738 | 48.895000 |
| min | 5.330000 | -100.730000 |
| 25% | 54.510000 | 6.770000 |
| 50% | 112.950000 | 24.190000 |
| 75% | 236.050000 | 60.190000 |
| max | 1063.290000 | 188.620000 |
Результат: Выбросы удалены из признаков Revenue и Profit методом IQR. Дальнейший анализ проводится на очищенном наборе данных df_clean.
Задача №1. Диаграмма рассеяния (Scatter Plot)¶
Построим scatter plot для пары признаков Revenue (выручка) и Profit (прибыль), чтобы проанализировать их корреляцию на очищенных данных.
Анализ диаграммы рассеяния¶
На основе построенного графика можно сделать следующие выводы:
- Линейная корреляция: Наблюдается ярко выраженная положительная линейная зависимость между выручкой (
Revenue) и прибылью (Profit). Это логично для торговых операций: чем выше объем продаж в денежном эквиваленте, тем выше итоговая прибыль. - Плотность данных: Основная масса заказов сосредоточена в диапазоне выручки до 400 USD и прибыли до 100 USD.
- Разброс (Дисперсия): С увеличением выручки разброс значений прибыли также увеличивается (форма «воронки»), что может быть связано с различиями в маржинальности разных категорий товаров или вариативностью затрат на логистику.
- Эффективность очистки: Благодаря предварительному удалению выбросов методом IQR, масштаб графика позволяет детально рассмотреть структуру взаимосвязи, которая была бы скрыта при наличии экстремальных значений.
Вывод по задаче №1: Диаграмма рассеяния подтверждает гипотезу о прямой зависимости прибыли от выручки и демонстрирует отсутствие аномальных отклонений в очищенном наборе данных.
Задача №2. Target (Mean) Encoding¶
Проведём кодирование категориального признака Shipping_Method (метод доставки) методом Target Encoding. Целевая переменная — Shipping_Days (дни доставки).
Уникальные значения 'Shipping_Method': Shipping_Method Economy 2007 Overnight 1990 Express 1982 Standard 1946 Name: count, dtype: int64 Количество уникальных значений: 4
Среднее время доставки по методам (Target Encoding): Shipping_Method Economy 11.474340 Express 11.226034 Overnight 11.519095 Standard 11.393114 Name: Shipping_Days, dtype: float64
Словарь кодирования:
{'Economy': 11.47433981066268, 'Express': 11.226034308779012, 'Overnight': 11.519095477386935, 'Standard': 11.39311408016444}
Результат кодирования (первые 10 строк):
| Shipping_Method | Shipping_Method_Encoded | Shipping_Days | |
|---|---|---|---|
| 1 | Economy | 11.474340 | 5 |
| 2 | Standard | 11.393114 | 8 |
| 4 | Standard | 11.393114 | 5 |
| 5 | Overnight | 11.519095 | 18 |
| 6 | Economy | 11.474340 | 11 |
| 7 | Express | 11.226034 | 18 |
| 8 | Express | 11.226034 | 13 |
| 9 | Economy | 11.474340 | 5 |
| 10 | Economy | 11.474340 | 24 |
| 12 | Economy | 11.474340 | 6 |
Интерпретация:
- Target Encoding заменяет категориальные значения на среднее значение целевой переменной
- Различия между методами доставки незначительны из-за синтетического характера данных
Задача №22. Масштабирование по максимальному значению (MaxAbs Scaling)¶
Проведём масштабирование числового признака Profit (прибыль) методом MaxAbs Scaling.
Статистика признака 'Profit' до масштабирования: count 7925.000000 mean 38.089692 std 48.895000 min -100.730000 25% 6.770000 50% 24.190000 75% 60.190000 max 188.620000 Name: Profit, dtype: float64 Максимальное значение: 188.62 Минимальное значение: -100.73
Результат масштабирования (первые 10 строк):
| Profit | Profit_Scaled | |
|---|---|---|
| 1 | 5.56 | 0.029477 |
| 2 | 79.89 | 0.423550 |
| 4 | 60.13 | 0.318789 |
| 5 | 118.78 | 0.629732 |
| 6 | 19.49 | 0.103329 |
| 7 | -50.80 | -0.269325 |
| 8 | 4.75 | 0.025183 |
| 9 | -14.77 | -0.078306 |
| 10 | 66.85 | 0.354416 |
| 12 | -14.50 | -0.076874 |
Статистика признака 'Profit' после масштабирования: count 7925.000000 mean 0.201939 std 0.259225 min -0.534037 25% 0.035892 50% 0.128247 75% 0.319107 max 1.000000 Name: Profit_Scaled, dtype: float64 Максимальное значение после масштабирования: 1.000000 Минимальное значение после масштабирования: -0.534037
Интерпретация:
- MaxAbs Scaling делит каждое значение на максимальное абсолютное значение признака
- Максимальное значение после масштабирования равно 1.0
- Отрицательные значения прибыли (убытки) сохраняют знак после масштабирования
Заключение¶
В ходе выполнения рубежного контроля №1 были решены следующие задачи и сделаны выводы:
Предобработка данных (Очистка от выбросов):
- Использование метода межквартильного размаха (IQR) позволило выявить и исключить около 20% аномальных значений в признаках
RevenueиProfit. Это критически важный этап, так как экстремальные выбросы (максимальная выручка в 20 000 при медиане 164) искажали бы статистические показатели и визуализацию.
- Использование метода межквартильного размаха (IQR) позволило выявить и исключить около 20% аномальных значений в признаках
Задача №1 (Диаграмма рассеяния):
- Построенный график продемонстрировал сильную положительную корреляцию между выручкой и прибылью. Характер распределения (форма «воронки») указывает на то, что с ростом объема сделки увеличивается и вариативность прибыли, что может свидетельствовать о разной маржинальности товаров. Очистка данных позволила визуализировать основную массу заказов в сопоставимом масштабе.
Задача №2 (Target Encoding):
- Применение целевого кодирования к признаку
Shipping_Methodпозволило перевести категориальные данные в числовой формат, сохранив информацию о взаимосвязи метода доставки со временем ожидания (Shipping_Days). Несмотря на то, что в синтетических данных средние значения по группам близки (11.2–11.5 дней), метод успешно продемонстрировал возможность подготовки признаков для моделей машинного обучения.
- Применение целевого кодирования к признаку
Задача №22 (MaxAbs Scaling):
- Масштабирование признака
Profitметодом MaxAbs привело все значения к диапазону [-0.53, 1.0]. Данный метод был выбран как оптимальный для сохранения знака прибыли (убыток остается отрицательным) и разреженности данных, что важно для корректной работы линейных алгоритмов и нейронных сетей.
- Масштабирование признака