Исходный размер 800x1200

Мини-анализ 44000 наименований одежды

PROTECT STATUS: not protected

Идея

post

Пришла мне аболютно закономерно: взяла то, что интересно (самая главная ценность во все времена), нашла по слову Fashion на предложенном Kaggle.com (https://www.kaggle.com/datasets/paramaggarwal/fashion-product-images-small) И задалась самыми простыми (но от этого не менее важными) вопросами: Что носят люди? Какой цвет носят люди? Чем одежда мужчин отличается от одежды женщин? Кого больше? Gucci/Louis Vuitton? Или победит массовость спорта? (Сам датасет не то чтобы про продажи, но, надо думать, если делают фото товаров, значит есть спрос?)

Что даст анализ и визуализация?

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

Какие графики я использовала

  1. Круговая — хорошо видны пропорции от целого
  2. Столбчатая — хороша для топов и сравнения количества
  3. Линейчатая — аналог столбчатой, но удобнее когда много значений, которые становится трудно прочесть
  4. Тепловая карта — чудесно отображает связи элементов

Весь лонгрид было решено сделать в пастельных тонах, чтобы настроить читающего на спокойный и аналитический лад) Ну и потому что мне самой она нравится.

Как я обрабатывала данные

1. Загрузка и первичный осмотр данных.

Загрузила файл и просто посмотрела на него. Цель — понять общую суть данных и их вид. # загружаю csv файл с данными df = pd.read_csv('styles.csv', on_bad_lines='skip') print(f"Строк: {len(df)}") # смотрю как выглядят данные df.head()

2. Проверка пропусков и целостности данных.

Посмотрела на пропуски. # Проверяю пропущенные значения print("Пропущено:") print(df.isnull().sum())

Дальше пойдёт статистическая обработка данных.

Нейрорука

post

Приложена к генерации всех этих замечательных иллюстраций (Всё в chatGPT) https://chatgpt.com/ Промпт: действуй как хороший дизайнер, у меня есть идея: сделать презентацию в пастельных тонах, в ней я буду излагать своё мини-исследование про анализ данных одежды, визуально она должна быть лёгкой и приятной, в пастельной палитре, а ещё обложку нарисуй в таком же стиле, чтобы всё выглядело модно и органично

Также ChatGPT помог разобраться с методами статистики Промпт: действуй как ментор по анализу данных, скажи, какие статистические методы для этого используются, вглубь не лезь, я только начинаю разбираться в этой теме

Применённые статистические методы

  1. Дескриптивная статистика (mean/min/max и т. д.) # статистика по числовым столбцам df.describe () # Хочется увидеть и категориальные тоже (общее) df.describe (include="all») # Отдельно статистика: df.select_dtypes (include="number»).agg ([«min», «max», «mean»])

  2. Частотный анализ (сколько раз встречается значение) # смотрю распределения по основным категориям print («Сколько товаров для кого:») # Беру количество значений print (df['gender'].value_counts ()) print () print («Основные категории:») print (df['masterCategory'].value_counts ()) print () print («Самые популярные типы вещей:») print (df['articleType'].value_counts ().head (10))

  3. Анализ количества пропусков # Проверяю пропущенные значения print («Пропущено:») print (df.isnull ().sum ())

  4. Кросс-табуляция — в виде тепловой карты, показывает связи # создаю кросс-таблицу (теплокарту) crosstab = pd.crosstab (df['masterCategory'], df['gender'])

# рисую тепловую карту plt.figure (figsize=(10, 6), facecolor='#F5F0EB') sns.heatmap (crosstab, annot=True, fmt='d', cmap='YlOrBr', cbar_kws={'label': 'Количество'}, linewidths=1, linecolor='#F5F0EB')

plt.title ('Связь основных категорий и пола', fontsize=13, pad=15, color='#6B5D54') plt.tight_layout () plt.savefig ('graph3_heatmap.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show ()

  1. Обработка текста — получила бренд из названия (по-простому: первое слово в названии) # создаю копию датасета только с непустыми названиями df_brands = df[df['productDisplayName'].notna ()].copy ()

# беру первое слово как бренд df_brands['brand'] = df_brands['productDisplayName'].str.split ().str[0]

# считаю топ брендов top_brands = df_brands['brand'].value_counts ().head (15)

Кто больше всех одевается?

Самый первый и фундаментальный вопрос. Рынок в виде сверху. Мужские товары занимают половину всего ассортимента (49.9! %). Женские на втором месте. Остальное — это унисекс вещи, детская одежда и товары для мальчиков/девочек отдельно. Честно говоря, я удивлена что мужских вещей так много! Обычно когда я хожу по магазинам, кажется что женских отделов всегда больше.

Исходный размер 1926x2033

# Кто больше всех одевается? # считаю сколько товаров для каждого пола gender_counts = df['gender'].value_counts () # создаю фигуру с бежевым фоном plt.figure (figsize=(8, 8), facecolor='#F5F0EB') # выбираю цвета для круговой диаграммы — все в бежевой гамме (через Adobe Color) colors = ['D4C5B9', 'E8DDD3', 'C9B8A8', 'A89584'] # рисую круговую диаграмму (пирог) plt.pie (gender_counts, labels=gender_counts.index, autopct='%1.1f%%', colors=colors, startangle=90, textprops={'fontsize': 11}) plt.title ('Распределение товаров по полу', fontsize=14, pad=20, color='#6B5D54') # Сохраняю график в высоком качестве для лонгрида plt.savefig ('graph1_gender.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show (

А цвет?

Черный и белый — это вообще вне конкуренции! Потому что это классика. Синий на третьем месте — тоже очень популярный цвет, особенно для джинсов и рубашек. Интересно что розовый довольно высоко в списке — наверное за счет женской одежды. Люди предпочитают нейтральные и базовые цвета. Яркие цвета есть, но их меньше.

Исходный размер 2961x2370

# А цвет? # беру топ цветов по популярности top_colors = df['baseColour'].value_counts ().head (15) # создаю фигуру plt.figure (figsize=(10, 8), facecolor='#F5F0EB') ax = plt.gca () ax.set_facecolor ('FFFFFF') # белый фон для графика # тут горизонтальные столбцы plt.barh (range (len (top_colors)), top_colors.values, color='#C9B8A8', edgecolor='#8B7B6B', linewidth=1.5) # подписываю оси plt.yticks (range (len (top_colors)), top_colors.index, fontsize=10) plt.xlabel ('Количество товаров', fontsize=11, color='#6B5D54') plt.title ('Топ самых популярных цветов', fontsize=13, pad=15, color='#6B5D54') # сетку чтобы было легче читать plt.grid (axis='x', alpha=0.3, color='#D4C5B9') plt.tight_layout () # сохраняю plt.savefig ('graph2_colors.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show ()

Кто что носит?

Одежда — самая большая категория и для мужчин и для женщин. Мужской одежды побольше. Аксессуары — у женщин их больше чем у мужчин. Это логично, женщины обычно больше внимания уделяют аксессуарам — сумки, украшения, шарфы. Расстроил малый выбор для детей, относительно взрослых, дети же тоже хотят и должны иметь выбор и красиво одеваться ( Интересно что категория унисекс не такая большая. Хотя сейчас много говорят про гендерно-нейтральную моду. Но данные староваты, наверно.

Исходный размер 2846x1764

# Кто что носит? # создаю кросс-таблицу (теплокарту) — в ней видно связи между парой элементов crosstab = pd.crosstab (df['masterCategory'], df['gender'])

# рисую plt.figure (figsize=(10, 6), facecolor='#F5F0EB')

# использую мягкую палитру sns.heatmap (crosstab, annot=True, fmt='d', cmap='YlOrBr', cbar_kws={'label': 'Количество'}, linewidths=1, linecolor='#F5F0EB') # Обзываю plt.title ('Связь основных категорий и пола', fontsize=13, pad=15, color='#6B5D54') plt.tight_layout ()

# сохраняю и отображаю график plt.savefig ('graph3_heatmap.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show ()

Во что больше всех одеваются?

В целом видно что спортивные бренды доминируют в датасете. Это показывает что люди стали больше ценить комфорт и функциональность в одежде. Плюс спортивную одежду можно носить куда угодно, это уже не только для зала.

Исходный размер 2968x2366

# Во что больше всех одеваются? # сначала нужно достать бренды из названий товаров (просто первое слово) # создаю копию датафрейма только с непустыми названиями df_brands = df[df['productDisplayName'].notna ()].copy () # разбиваю название по пробелам и беру первое слово — обычно это бренд df_brands['brand'] = df_brands['productDisplayName'].str.split ().str[0] # считаю топ брендов top_brands = df_brands['brand'].value_counts ().head (15) # рисую график plt.figure (figsize=(10, 8), facecolor='#F5F0EB') ax = plt.gca () ax.set_facecolor ('#FFFFFF')

# горизонтальные столбцы plt.barh (range (len (top_brands)), top_brands.values, color='#D4C5B9', edgecolor='#8B7B6B', linewidth=1.5) # оси и названгие plt.yticks (range (len (top_brands)), top_brands.index, fontsize=10) plt.xlabel ('Количество товаров', fontsize=11, color='#6B5D54') plt.title ('Топ брендов по количеству товаров', fontsize=13, pad=15, color='#6B5D54') plt.grid (axis='x', alpha=0.3, color='#D4C5B9') plt.tight_layout ()

plt.savefig ('graph4_brands.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show ()

Что носят больше всего?

Футболки — абсолютный лидер! Их аж больше 7000 штук. Ведь футболка это базовая вещь в любом гардеробе. На втором месте рубашки — около 3200 штук. Рубашки тоже очень универсальная вещь, можно носить и на работу, и на прогулку. На первом месте из неодёжного — повседневная обувь, а на втором — часы.

Все эти вещи базовые, достаточно интересно.

Исходный размер 3571x1768

# Что носят больше всего? # считаю топ типов одежды top_articles = df['articleType'].value_counts ().head (10)

# создаю фигуру plt.figure (figsize=(12, 6), facecolor='#F5F0EB') ax = plt.gca () ax.set_facecolor ('#FFFFFF')

# обычная вертикальная столбчатая диаграмма plt.bar (range (len (top_articles)), top_articles.values, color='#B8A99A', edgecolor='#8B7B6B', linewidth=1.5)

# подписываю столбцы — поворачиваю названия под углом чтобы влезли plt.xticks (range (len (top_articles)), top_articles.index, rotation=45, ha='right', fontsize=10) plt.ylabel ('Количество', fontsize=11, color='#6B5D54') plt.title ('Топ самых популярных типов товаров', fontsize=13, pad=15, color='#6B5D54')

# сетка по горизонтали plt.grid (axis='y', alpha=0.3, color='#D4C5B9') plt.tight_layout ()

plt.savefig ('graph5_articles.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show ()

В какой сезон больше всего одеваются?

Летние товары — это больше 20 тысяч штук! Это почти половина всего датасета. Очень большая разница с другими сезонами. Осени и зимы и весны примерно одинаково. Удивило, что весны так мало Возможно, летнюю одежду просто проще и дешевле производить, так как она тонкая и лёгкая

Исходный размер 2971x1768

# В какой сезон больше всего одеваются? # считаю кол-во товаров для каждого сезона season_counts = df['season'].value_counts ()

# рисую график plt.figure (figsize=(10, 6), facecolor='#F5F0EB') ax = plt.gca () ax.set_facecolor ('#FFFFFF')

# столбчатая диаграмма plt.bar (season_counts.index, season_counts.values, color='#A89584', edgecolor='#8B7B6B', linewidth=1.5)

plt.ylabel ('Количество товаров', fontsize=11, color='#6B5D54') plt.title ('Распределение товаров по сезонам', fontsize=13, pad=15, color='#6B5D54') plt.grid (axis='y', alpha=0.3, color='#D4C5B9') plt.tight_layout ()

# сохраняю plt.savefig ('graph6_seasons.png', dpi=300, bbox_inches='tight', facecolor='#F5F0EB') plt.show ()

Самые интересные для меня выводы

По столь интересной и важной для меня работе

Бренды Спортивные гиганты прямо-таки доминируют на рынке, обгоняя high-fashion бренды. Всё таки победила простота и удобство.

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

Данные Могут рассказать очень много, даже о такой, как я думала сначала, не связанной с ними сфере.

Мини-анализ 44000 наименований одежды
Проект создан 14.01.2026
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше