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

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

PROTECT STATUS: not protected

Идея

post

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

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

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

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

  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 штук. Рубашки тоже очень универсальная вещь, можно носить и на работу, и на прогулку. На первом месте из неодёжного - повседневная обувь, а на втором - часы.

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

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