Идея
Пришла мне аболютно закономерно: взяла то, что интересно(самая главная ценность во все времена), нашла по слову Fashion на предложенном Kaggle.com (https://www.kaggle.com/datasets/paramaggarwal/fashion-product-images-small) И задалась самыми простыми(но от этого не менее важными) вопросами: Что носят люди? Какой цвет носят люди? Чем одежда мужчин отличается от одежды женщин? Кого больше? Gucci/Louis Vuitton? Или победит массовость спорта? (Cам датасет не то чтобы про продажи, но, надо думать, если делают фото товаров, значит есть спрос?)
Что даст анализ и визуализация?
Мы проведём анализ и построим цепочку визуализаций: в первую очередь, это позволит выделить практические выводы, которые позволяют в общем оценить рынок(ровно в той мере, в которой он отражён в датасете), посмотреть на ситуацию как бы сверху. Это очень полезно, особенно в современном мире, где данные буквально повсюду, как оказалось.
Какие графики я использовала
- Круговая - хорошо видны пропорции от целого
- Столбчатая - хороша для топов и сравнения количества
- Линейчатая - аналог столбчатой, но удобнее когда много значений, которые становится трудно прочесть
- Тепловая карта - чудесно отображает связи элементов
Весь лонгрид было решено сделать в пастельных тонах, чтобы настроить читающего на спокойный и аналитический лад) Ну и потому что мне самой она нравится.
Как я обрабатывала данные
1. Загрузка и первичный осмотр данных.
Загрузила файл и просто посмотрела на него. Цель - понять общую суть данных и их вид.
# загружаю csv файл с данными
df = pd.read_csv('styles.csv', on_bad_lines='skip')
print(f"Строк: {len(df)}")
# смотрю как выглядят данные
df.head()
2. Проверка пропусков и целостности данных.
Посмотрела на пропуски.
# Проверяю пропущенные значения
print("Пропущено:")
print(df.isnull().sum())
Дальше пойдёт статистическая обработка данных.
Нейрорука
Приложена к генерации всех этих замечательных иллюстраций (Всё в chatGPT) https://chatgpt.com/ Промпт: действуй как хороший дизайнер, у меня есть идея: сделать презентацию в пастельных тонах, в ней я буду излагать своё мини-исследование про анализ данных одежды, визуально она должна быть лёгкой и приятной, в пастельной палитре, а ещё обложку нарисуй в таком же стиле, чтобы всё выглядело модно и органично
Также ChatGPT помог разобраться с методами статистики Промпт: действуй как ментор по анализу данных, скажи, какие статистические методы для этого используются, вглубь не лезь, я только начинаю разбираться в этой теме
Применённые статистические методы
Дескриптивная статистика (mean/min/max и т.д.) # статистика по числовым столбцам df.describe() # Хочется увидеть и категориальные тоже (общее) df.describe(include="all") # Отдельно статистика: df.select_dtypes(include="number").agg(["min", "max", "mean"])
Частотный анализ (сколько раз встречается значение) # смотрю распределения по основным категориям print("Сколько товаров для кого:") # Беру количество значений print(df['gender'].value_counts()) print() print("Основные категории:") print(df['masterCategory'].value_counts()) print() print("Самые популярные типы вещей:") print(df['articleType'].value_counts().head(10))
Анализ количества пропусков # Проверяю пропущенные значения print("Пропущено:") print(df.isnull().sum())
Кросс-табуляция - в виде тепловой карты, показывает связи # создаю кросс-таблицу(теплокарту) 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()
- Обработка текста - получила бренд из названия(по-простому: первое слово в названии) # создаю копию датасета только с непустыми названиями 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!%). Женские на втором месте. Остальное - это унисекс вещи, детская одежда и товары для мальчиков/девочек отдельно. Честно говоря, я удивлена что мужских вещей так много! Обычно когда я хожу по магазинам, кажется что женских отделов всегда больше.
# Кто больше всех одевается? # считаю сколько товаров для каждого пола 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(
А цвет?
Черный и белый - это вообще вне конкуренции! Потому что это классика. Синий на третьем месте - тоже очень популярный цвет, особенно для джинсов и рубашек. Интересно что розовый довольно высоко в списке - наверное за счет женской одежды. Люди предпочитают нейтральные и базовые цвета. Яркие цвета есть, но их меньше.
# А цвет? # беру топ цветов по популярности 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()
Кто что носит?
Одежда - самая большая категория и для мужчин и для женщин . Мужской одежды побольше. Аксессуары - у женщин их больше чем у мужчин. Это логично, женщины обычно больше внимания уделяют аксессуарам - сумки, украшения, шарфы. Расстроил малый выбор для детей, относительно взрослых, дети же тоже хотят и должны иметь выбор и красиво одеваться( Интересно что категория унисекс не такая большая. Хотя сейчас много говорят про гендерно-нейтральную моду. Но данные староваты, наверно.
# Кто что носит? # создаю кросс-таблицу(теплокарту) - в ней видно связи между парой элементов 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()
Во что больше всех одеваются?
В целом видно что спортивные бренды доминируют в датасете. Это показывает что люди стали больше ценить комфорт и функциональность в одежде. Плюс спортивную одежду можно носить куда угодно, это уже не только для зала.
# Во что больше всех одеваются? # сначала нужно достать бренды из названий товаров (просто первое слово) # создаю копию датафрейма только с непустыми названиями 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 штук. Рубашки тоже очень универсальная вещь, можно носить и на работу, и на прогулку. На первом месте из неодёжного - повседневная обувь, а на втором - часы.
Все эти вещи базовые, достаточно интересно.




