当前位置: 首页 > article >正文

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()

总结


http://www.kler.cn/a/513896.html

相关文章:

  • 第二十四课 Vue中子组件调用父组件数据
  • Kafka-常见的问题解答
  • 路径规划之启发式算法之二十八:候鸟优化算法(Migrating Birds Optimization, MBO)
  • 《探秘鸿蒙Next:非结构化数据处理与模型轻量化的完美适配》
  • 【Qt 常用控件】显示类控件——QLabel
  • CSS语言的数据类型
  • Java设计模式 十四 行为型模式 (Behavioral Patterns)
  • 【Spring】定义的Bean缺少隐式依赖
  • 解决npm install安装出现packages are looking for funding run `npm fund` for details问题
  • Spring中的事件和事件监听器是如何工作的?
  • GAN 用于图像增强
  • HTML新春烟花
  • 【25考研】考清华的软件工程专业的研究生需要准备什么?
  • 论文速读| A Survey on Data Synthesis and Augmentation for Large Language Models
  • 图片专栏——曝光度调整相关
  • 如何设置HSTS和OCSP Stapling?
  • js高阶-响应式原理
  • 线性规划:机器学习中的优化利器
  • NodeJs如何做API接口单元测试? --【elpis全栈项目】
  • Vue3初学之商品的增,删,改功能
  • Windows下建立Jupyter-lab 编程环境
  • STM32单片机:GPIO模式
  • gitlab使用多数据库
  • 知识图谱中的word2vec 技术是做什么的?
  • 机器学习10-解读CNN代码Pytorch版
  • Flink 使用 Kafka 作为数据源时遇到了偏移量提交失败的问题