电商双 11 美妆数据分析总结
数据概况与清洗
1. 数据基础
- 原始数据包含 27598 条双 11 美妆商品记录,共 7 个特征:
update_time
(更新时间)、id
(商品 ID)、title
(商品标题)、price
(价格)、sale_count
(销量)、comment_count
(评论数)、店名
(店铺名称)。 - 数据类型:3 个数值型(
price
、sale_count
、comment_count
),4 个字符型。
2. 核心清洗代码
python
运行
import numpy as np
import pandas as pd# 读取数据
df = pd.read_csv('双十一淘宝美妆数据.csv')# 去重
data = df.drop_duplicates(inplace=False) # 删除重复行,保留27512条
data.reset_index(inplace=True, drop=True) # 重置索引# 缺失值处理(用0填补销量和评论数的缺失)
data = data.fillna(0)
特征工程(新增关键特征)
1. 文本分词(标题解析)
python
运行
import jieba# 对标题分词(搜索引擎模式)
subtitle = []
for each in data['title']:k = jieba.lcut_for_search(each) # 细粒度分词,适合提取商品特征subtitle.append(k)
data['subtitle'] = subtitle # 新增分词列
2. 商品分类(大类 / 小类)
python
运行
# 定义分类规则(大类、小类、关键词映射)
basic_data = """护肤品 乳液类 乳液 美白乳 润肤乳 ...化妆品 口红类 唇釉 口红 唇彩 唇膏 ...""" # 完整分类见原文# 构建分类字典
dcatg = {}
catg = basic_data.split('\n')
for i in catg:main_cat = i.strip().split('\t')[0] # 大类(如护肤品)sub_cat = i.strip().split('\t')[1] # 小类(如乳液类)o_cat = i.strip().split('\t')[2:] # 关键词(如乳液、美白乳)for j in o_cat:dcatg[j] = (main_cat, sub_cat)# 为商品匹配分类
sub_type = [] # 小类
main_type = [] # 大类
for i in range(len(data)):exist = Falsefor j in data['subtitle'][i]:if j in dcatg:sub_type.append(dcatg[j][1])main_type.append(dcatg[j][0])exist = Truebreakif not exist:sub_type.append('其他')main_type.append('其他')
data['sub_type'] = sub_type
data['main_type'] = main_type
3. 性别标识与销售额
python
运行
# 标记是否男士专用
sex = []
for i in range(len(data)):if '男士' in data['subtitle'][i] or '男生' in data['subtitle'][i] or \('男' in data['subtitle'][i] and '女' not in data['subtitle'][i] and '斩男' not in data['subtitle'][i]):sex.append('是')else:sex.append('否')
data['是否男士专用'] = sex# 计算销售额
data['销售额'] = data['price'] * data['sale_count']
核心分析结论(附关键代码)
1. 品牌表现分析
python
运行
# 各品牌销量、销售额对比
brand_sale = data.groupby('店名')['sale_count'].sum().sort_values() # 销量排名
brand_rev = data.groupby('店名')['销售额'].sum().sort_values() # 销售额排名# 关键发现:
# - 相宜本草销量、销售额均第一(低价策略见效)
# - 悦诗风吟商品数量最多,但销量仅第三
# - SKII、植村秀销量为0(定位或活动问题)
2. 价格与销量关系
python
运行
# 按均价分组(0-100元/A类,100-200元/B类,等)
avg_price = data.groupby('店名')['销售额'].sum() / data.groupby('店名')['sale_count'].sum()
A = avg_price[(avg_price <= 100) & (avg_price > 0)].index # 低价品牌
# 结论:A类品牌销售额占比最高,低价更受消费者青睐
3. 时间趋势(双 11 前后销量)
python
运行
import matplotlib.pyplot as plt
from datetime import datetime# 每日销量趋势
sale_day = data.groupby('update_time')['sale_count'].sum()
sale_day.index = [datetime.strptime(i, '%Y/%m/%d') for i in sale_day.index]
sale_day.plot() # 9日达峰,11日骤降(预热提前消费)
4. 性别细分市场
python
运行
# 男士专用商品销量占比
male_sale_ratio = data.groupby('是否男士专用')['sale_count'].sum() / data['sale_count'].sum()
# 结论:男士专用商品占比低(约8%),核心为清洁类和补水类,妮维雅、欧莱雅主导市场