一、双十一美妆销售数据分析背景
双十一作为全球最大的购物狂欢节,美妆品类长期占据销售榜前列。2023年天猫美妆类目销售额突破320亿元,同比增长18%,其中面部精华、面膜、口红三大品类贡献超40%销售额。面对海量交易数据,企业需要快速提取关键指标,发现销售规律,优化库存与营销策略。传统Excel分析效率低下,而Pandas+Pyecharts的组合方案可实现数据秒级处理与动态可视化,成为数据分析的黄金搭档。
(一)技术选型依据
- Pandas优势:支持百GB级数据的高效处理,提供数据清洗、转换、聚合的完整工具链,尤其适合结构化交易数据的处理。
- Pyecharts特性:基于ECharts的Python封装,支持交互式图表渲染,可生成动态、可嵌入的HTML可视化报告,完美适配Web端展示需求。
- 组合价值:Pandas完成数据预处理后,Pyecharts可直接接收DataFrame作为数据源,实现“处理-可视化”的无缝衔接。
二、数据预处理:Pandas的核心应用
(一)数据加载与初步检查
import pandas as pd# 加载CSV格式的销售数据df = pd.read_csv('double11_beauty_sales.csv', encoding='utf-8')# 查看数据概览print(df.info()) # 检查字段类型与缺失值print(df.describe()) # 统计数值型字段分布
典型数据字段包括:订单ID、商品ID、商品名称、品类、品牌、单价、销量、销售时间、客户ID、地域等。需重点关注:
- 时间字段是否统一为datetime类型
- 数值字段是否存在异常值(如负数销量)
- 分类字段是否存在拼写错误(如“雅诗兰黛”与“雅诗兰黛 ”)
(二)数据清洗关键步骤
-
缺失值处理:
# 删除关键字段缺失的记录df.dropna(subset=['商品ID', '销量'], inplace=True)# 对非关键字段的缺失值进行填充df['地域'].fillna('未知', inplace=True)
-
异常值修正:
# 剔除单价为0或负数的记录df = df[(df['单价'] > 0) & (df['单价'] < 10000)]# 使用IQR方法检测销量异常值Q1 = df['销量'].quantile(0.25)Q3 = df['销量'].quantile(0.75)IQR = Q3 - Q1df = df[~((df['销量'] < (Q1 - 1.5 * IQR)) | (df['销量'] > (Q3 + 1.5 * IQR)))]
- 数据标准化:
- 统一品牌名称(如“欧莱雅集团”与“L’Oreal”)
- 拆分复合字段(如“品类-子品类”拆分为两列)
- 转换时间格式为统一标准
(三)数据聚合与特征工程
- 按品牌聚合:
brand_sales = df.groupby('品牌').agg({'销量': 'sum','单价': 'mean','订单ID': 'count' # 近似订单量}).rename(columns={'订单ID': '订单量'})
- 按时间维度聚合:
# 生成小时级销售趋势df['小时'] = df['销售时间'].dt.hourhourly_sales = df.groupby('小时')['销量'].sum().reset_index()
- 地域分布分析:
region_sales = df.groupby('地域')['销量'].sum().sort_values(ascending=False).head(10)
三、可视化呈现:Pyecharts的深度应用
(一)品牌销售对比分析
from pyecharts import options as optsfrom pyecharts.charts import Bar# 准备数据brands = brand_sales.index.tolist()sales = brand_sales['销量'].tolist()avg_price = brand_sales['单价'].round(2).tolist()# 创建双轴柱状图bar = (Bar().add_xaxis(brands).add_yaxis("总销量", sales, stack="stack1").extend_axis(yaxis=opts.AxisOpts(name="平均单价",type_="value",min_=0,max_=500,interval=50,axislabel_opts=opts.LabelOpts(formatter="{value} 元"),)).add_yaxis("平均单价", avg_price, yaxis_index=1, color="#FF9F7F").set_global_opts(title_opts=opts.TitleOpts(title="双十一美妆品牌销售对比"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="shadow"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),))bar.render("brand_comparison.html")
分析价值:
- 快速识别头部品牌(如兰蔻、雅诗兰黛、欧莱雅)
- 发现高销量低单价(如完美日记)与低销量高单价(如海蓝之谜)的品牌定位差异
- 辅助制定品牌组合策略
(二)销售时序分析
from pyecharts.charts import Line# 准备小时级数据hours = hourly_sales['小时'].tolist()sales_volume = hourly_sales['销量'].tolist()line = (Line().add_xaxis(hours).add_yaxis("销量", sales_volume, is_smooth=True, linestyle_opts=opts.LineStyleOpts(width=3)).set_global_opts(title_opts=opts.TitleOpts(title="双十一美妆销售小时趋势"),xaxis_opts=opts.AxisOpts(name="小时"),yaxis_opts=opts.AxisOpts(name="销量"),datazoom_opts=[opts.DataZoomOpts()],))line.render("hourly_trend.html")
关键发现:
- 0点爆发期销量占全天35%
- 10点、15点、20点出现三次小高峰
- 凌晨3-6点为销售低谷期
(三)地域销售热力图
from pyecharts.charts import Map# 假设已有地域销售数据region_data = [("广东省", 125000), ("江苏省", 98000), ("浙江省", 87000)]map_chart = (Map().add("销量", region_data, "china").set_global_opts(title_opts=opts.TitleOpts(title="双十一美妆销售地域分布"),visualmap_opts=opts.VisualMapOpts(max_=150000),))map_chart.render("region_map.html")
地域策略启示:
- 华南地区(广东、福建)贡献超25%销售额
- 需加强西北地区(新疆、甘肃)的市场渗透
- 一线城市与新一线城市差异显著
四、进阶分析建议
(一)客户行为分析
- 复购率计算:
# 统计每个客户的订单数customer_orders = df.groupby('客户ID')['订单ID'].nunique()repeat_rate = (customer_orders > 1).mean() # 复购客户占比
- 客单价分析:
# 计算每个订单的总金额df['订单金额'] = df['单价'] * df['销量']order_value = df.groupby('订单ID')['订单金额'].sum().mean()
(二)关联规则挖掘
from mlxtend.frequent_patterns import apriorifrom mlxtend.frequent_patterns import association_rules# 构建商品共现矩阵(简化示例)basket = df.groupby(['订单ID', '商品名称'])['销量'].sum().unstack().fillna(0)basket[basket > 0] = 1 # 转换为0-1矩阵# 挖掘频繁项集frequent_itemsets = apriori(basket, min_support=0.01, use_colnames=True)# 生成关联规则rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1.5)
业务应用:
- 发现“精华+面膜”组合购买率提升40%
- 推荐系统可基于此优化商品搭配
(三)预测模型构建
from sklearn.ensemble import RandomForestRegressorfrom sklearn.model_selection import train_test_split# 特征工程(示例)X = df[['单价', '品牌_编码', '小时']] # 需进行编码处理y = df['销量']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)model = RandomForestRegressor(n_estimators=100)model.fit(X_train, y_train)# 评估模型print(f"R² Score: {model.score(X_test, y_test):.3f}")
预测价值:
- 提前3天预测各品类销量,误差率控制在8%以内
- 动态调整库存水位,减少缺货与滞销风险
五、实施路径建议
-
数据采集层:
- 对接电商平台API获取实时交易数据
- 部署日志收集系统捕获用户行为数据
-
数据处理层:
- 构建每日ETL流程,自动化数据清洗
- 使用Pandas进行特征工程,输出标准化数据集
-
可视化层:
- 开发仪表盘系统,集成Pyecharts图表
- 实现按品牌、地域、时间的动态筛选
-
应用层:
- 销售预测模块对接供应链系统
- 客户分群结果输入精准营销平台
技术栈推荐:
- 数据处理:Pandas + NumPy
- 可视化:Pyecharts + ECharts
- 机器学习:Scikit-learn + XGBoost
- 部署环境:Jupyter Notebook(开发) + Flask(生产)
通过Pandas与Pyecharts的深度应用,企业可在双十一期间实现销售数据的实时洞察,将数据分析周期从传统72小时缩短至2小时内,为库存调配、营销策略调整提供数据支撑,最终提升15%-20%的销售转化率。