Original size 762x960

Отзывы о женской одежде

PROTECT STATUS: not protected

Введение

Для анализа использован набор данных о женской одежде и отзывах покупателей из онлайн-магазина. Источником является сайт Kaggle. Набор содержит 23486 отзывов и 10 переменных, каждая строка соответствует одному отзыву и включает информацию о вещи, возрасте покупателя, заголовке и тексте отзыва, рейтинге, рекомендации, числе положительных откликов и категориальных признаках, описывающих тип и отдел одежды.

big
Original size 874x749

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

Цель анализа

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

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

Обработка данных

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

coding: utf-8

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from matplotlib import rcParams

Загрузка CSV

df = pd.read_csv («/content/WomensClothingdata.csv») df.head ()

Очистка и подготовка данных

df[«Title»] = df[«Title»].fillna (»») df[«Review Text»] = df[«Review Text»].fillna (»») df[«Rating»] = df[«Rating»].astype (int) df[«Positive Feedback Count»] = df[«Positive Feedback Count»].astype (int) df[«Age»] = df[«Age»].astype (int) df[«review_length»] = df[«Review Text»].apply (len)

Стилизация графиков

Графики оформлены с использованием нестандартных цветовых палитр Seaborn и шрифта DejaVu Sans. Заголовки выделены жирным, градиенты и контрастные границы помогают акцентировать внимание на ключевых данных. Такой стиль делает графики более информативными и приятными для восприятия:

rcParams['font.family'] = 'DejaVu Sans'

custom_palette = sns.color_palette («pastel») sns.set_theme (style="whitegrid», palette=custom_palette)

plt.rcParams[«figure.figsize»] = (12, 6)

Распределение рейтингов и средний рейтинг по категориям

Столбчатые диаграммы позволяют увидеть, какие оценки преобладают и какие категории получают высокие или низкие средние рейтинги. С помощью группировки данных groupby и визуализации через seaborn построены графики распределения рейтингов и среднего рейтинга по категориям:

Распределение рейтингов (столбчатая диаграмма):

counts = df[«Rating»].value_counts ().sort_index () colors = sns.color_palette («rocket», len (counts))

counts.plot (kind="bar», color=colors, edgecolor='black') plt.title («Распределение рейтингов», fontsize=16, fontweight='bold') plt.xlabel («Рейтинг», fontsize=12) plt.ylabel («Количество отзывов», fontsize=12) plt.show ()

Original size 817x438

Средний рейтинг по категории одежды:

rating_by_class = df.groupby («Class Name»)[«Rating»].mean ().sort_values () colors = sns.color_palette («mako», len (rating_by_class))

rating_by_class.plot (kind="barh», color=colors, edgecolor='black') plt.title («Средний рейтинг по типу одежды», fontsize=16, fontweight='bold') plt.xlabel («Средний рейтинг», fontsize=12) plt.ylabel («Тип одежды», fontsize=12) plt.show ()

Original size 992x500

Результаты показали, что большинство отзывов положительные (4–5). Лидеры — Casual bottoms, Layering, Jeans, а аутсайдеры — Trend, Chemises, Dresses.

Распределение возраста покупателей

Чтобы изучить возрастной состав аудитории, построили гистограмму с кривой плотности:

Возраст покупателей (гистограмма + KDE)

sns.histplot (df['Age'], bins=20, kde=True, color=»#FF6F61», edgecolor="black») plt.title («Распределение возраста покупателей», fontsize=16, fontweight='bold') plt.xlabel («Возраст», fontsize=12) plt.ylabel («Количество отзывов», fontsize=12) plt.show ()

Здесь bins=20 делит возраст на интервалы, kde=True строит кривую плотности, а цвет выбран для наглядности.

Original size 919x499

Результат показал, что основная аудитория — 30–50 лет с пиком на 35–40, после 60 лет количество отзывов резко падает.

Длина отзывов по рейтингу и возрастным группам

График показывает распределение длины отзывов в зависимости от рейтинга и возраста покупателей:

plt.figure (figsize=(12,6)) sns.boxplot (x='Rating', y='review_length', hue=pd.cut (df['Age'], bins=[18,30,40,50,60,70]), data=df, palette="viridis») plt.title («Длина отзывов по рейтингу и возрастным группам», fontsize=16, fontweight='bold') plt.xlabel («Рейтинг», fontsize=12) plt.ylabel («Длина отзыва (символы)», fontsize=12) plt.legend (title='Возрастная группа') plt.show ()

Original size 902x501

Молодые покупатели (18–30) оставляют более короткие отзывы, независимо от рейтинга. Группа 30–50 лет пишет отзывы средней длины, с небольшой тенденцией к увеличению длины при росте рейтинга.

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

Средний рейтинг по категории и возрастной группе

Тепловая карта построена на основе сводной таблицы средних рейтингов по категориям одежды и возрастным группам с помощью pivot_table и sns.heatmap.

Создаем возрастные группы: df['Age_group'] = pd.cut (df['Age'], bins=[18,30,40,50,60,70], labels=['18-30', '31-40', '41-50', '51-60', '61-70'])

Средний рейтинг: pivot_rating = df.pivot_table (index='Class Name', columns='Age_group', values='Rating', aggfunc='mean')

plt.figure (figsize=(14,8)) sns.heatmap (pivot_rating, annot=True, fmt=».2f», cmap='YlGnBu', cbar_kws={'label': 'Средний рейтинг'}) plt.title («Средний рейтинг по типу одежды и возрастной группе», fontsize=16, fontweight='bold') plt.ylabel («Class Name») plt.xlabel («Возрастная группа») plt.show ()

Original size 1043x637

Покупатели 18–30 лет лидируют по оценкам повседневных брюк (4.50) и нижнего белья (4.50), клиенты 61–70 лет предпочитают многослойную одежду (4.78) и домашний стиль (4.30). Пляжная одежда плавно понижается в рейтинге с 4.34 (18–30) до 3.71 (61–70), что, вероятно, связано с изменением образа жизни и потребностей.

Отзывы о женской одежде
Project created at 17.01.2026
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more