14-美妆数据分析


前言

美妆数据分析可以帮助企业更好地理解市场趋势、客户偏好和产品表现

import pandas as pd
import numpy as np

一、数据清洗

data = pd.read_csv(r'C:\Users\B\Desktop\美妆数据.csv',encoding='gbk')
data.head()

data.info()

data = data.drop_duplicates(inplace=False)
data.reset_index(drop=True)
data.index

data.isnull().mean()

data['销量'].mode()
data['评论数'].mode()

data = data.fillna(0)
data.isnull().sum()

# data.drop_duplicates(inplace=True)
data.describe()

二、使用步骤

1.标题切分

代码如下(示例):

import jieba

lst = []
for i in data['标题']:
    j = jieba.lcut(i)
    lst.append(j)
data['标题切分'] = lst

data[['标题','标题切分']].head()

basic_config_data = """护肤品    套装    套装                            
护肤品    乳液类    乳液    美白乳    润肤乳    凝乳     亮肤乳    菁华乳    修护乳
护肤品    眼部护理    眼霜    眼部精华    眼膜                    
护肤品    面膜类    面膜                                                    
护肤品    清洁类    洗面    洁面    清洁    卸妆    洁颜    洗颜    去角质    磨砂                        
护肤品    化妆水    化妆水    爽肤水    柔肤水    补水露    凝露    柔肤液    精粹水    亮肤水    润肤水    保湿水    菁华水    保湿喷雾    舒缓喷雾
护肤品    面霜类    面霜    日霜    晚霜    柔肤霜    滋润霜    保湿霜    凝霜    日间霜    晚间霜    乳霜    修护霜    亮肤霜    底霜    菁华霜
护肤品    精华类    精华液    精华水    精华露    精华素                                        
护肤品    防晒类    防晒霜    防晒喷雾                                                
化妆品    口红类    唇釉    口红    唇彩                                            
化妆品    底妆类    散粉    蜜粉    粉底液    定妆粉     气垫    粉饼    BB    CC    遮瑕    粉霜    粉底膏    粉底霜    
化妆品    眼部彩妆    眉粉    染眉膏    眼线    眼影    睫毛膏                                    
化妆品    修容类    鼻影    修容粉    高光    腮红                                        
其他    其他    其他"""

category_config_map = {}
for config_line in basic_config_data.split('\n'):
    basic_cateogry_list = config_line.strip().strip('\n').strip('    ').split('    ')
#     print(basic_cateogry_list)
    main_category = basic_cateogry_list[0]   # 主类别      
#     print(main_category)
    sub_category = basic_cateogry_list[1]   # 子类别      
    unit_category_list = basic_cateogry_list[2:]   # 从第3个元素开始到最后是商品
    for unit_category in unit_category_list:
        if unit_category and unit_category.strip().strip('    '):   
            category_config_map[unit_category.strip()] = (main_category,sub_category) 
            
category_config_map

def find_cates(row):
    for item in row:
        if item in category_config_map:
            return category_config_map[item]   # 如果是商品,则返回主类别和子类别
    return ('其他','其他')

data['主类别'] = data['标题切分'].map(lambda r:find_cates(r)[0])
data['子类别'] = data['标题切分'].map(lambda r:find_cates(r)[1])

data.reset_index(inplace=True)

# 判断是否是男士专用 
gender = []
for i in range(len(data)):
    if '男' in data['标题切分'][i]:
        gender.append('是')
    elif '男士' in data['标题切分'][i]:
        gender.append('是')
    elif '男生' in data['标题切分'][i]:  
        gender.append('是')
    else:
        gender.append('否')
data['是否男士专用'] = gender
data.head()

data['购买时间'] = pd.to_datetime(data['购买时间'])
data = data.set_index('购买时间')
data.head()

data['天'] = data.index.day
data

del data['标题切分']
data.to_excel('美妆数据-已清洗.xlsx')

2.数据分析

1)各品牌分布

代码如下(示例):

import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['font.family']='SimHei'
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['font.size']=13


# figsize 设置画布大小   alpha透明度
data['店名'].value_counts().plot.bar(width=0.8,color='g',alpha=0.6,figsize=(10,6))

plt.title('各品牌数')
plt.ylabel('品牌数')
plt.show()

2)各品牌的销量和销售额

dd = data.groupby('店名')[['销量','销售额']].sum().sort_values(by='销售额')
dd

fig,ax1 = plt.subplots(figsize=(15,6))
color = 'tab:green'
ax1.bar(dd.index,dd['销售额'],color=color,label='销售额')
ax1.set_xlabel('品牌')
ax1.set_ylabel('销售额',color=color)
ax1.set_xticklabels(dd.index,rotation=45)


# 折线图
color2 = 'tab:red'
ax2 = ax1.twinx()
ax2.plot(dd.index,dd['销量'],color=color2,label='销量',marker='D')
ax2.set_ylabel('销量',color=color2)
fig.legend()

3)主类别 子类别销量分析

import plotly.express as px
import numpy as np

# 旭日图
fig = px.sunburst(
    data,
    path=['主类别','子类别'],
    values='销量',
    color='子类别',
    hover_data=['销量']
)

fig.show()

4)评论数 

data.groupby('店名')['评论数'].mean().sort_values(ascending=False).plot(kind='bar',width=0.8,color='g',alpha=0.6,figsize=(12,6))

5)品牌-销量-价格-评论数分析

plt.figure(figsize=(15,8))
x = data.groupby('店名')['销量'].mean()
y = data.groupby('店名')['评论数'].mean()
s = data.groupby('店名')['交易价格'].mean()
txt = data.groupby('店名')['产品编号'].count().index  # 求分组对应的索引
# print(txt)


sns.scatterplot(x=x,
                y=y,
                size=s,  # 点的大小
                sizes = (100,1500), # 点的范围
                data = data,
                hue=s     # 按交易价格来分颜色
)
for i in range(len(txt)):
    plt.annotate(txt[i],xy=(x[i],y[i]))

plt.show()

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

william_liu1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值