注意:该项目只展示部分功能,如需了解,文末咨询即可。
本文目录
- [1 开发环境](#1 开发环境)
- [2 系统设计](#2 系统设计)
- [3 系统展示](#3 系统展示)
- [3.1 功能展示视频](#3.1 功能展示视频)
- [3.2 大屏页面](#3.2 大屏页面)
- [3.3 分析页面](#3.3 分析页面)
- [3.4 基础页面](#3.4 基础页面)
- [4 更多推荐](#4 更多推荐)
- [5 部分功能代码](#5 部分功能代码)
1 开发环境
发语言:python
采用技术:Spark、Hadoop、Django、Vue、Echarts等技术框架
数据库:MySQL
开发环境:PyCharm
2 系统设计
基于 Hadoop 生态的化妆品销售数据存储分析与可视化能够把化妆品销售订单数据转化为品牌竞争、品类销售、渠道运营、区域市场、用户画像、价格折扣和销售机会等多维洞察,帮助识别头部与长尾品牌、热门与高端品类、主力渠道与区域市场、核心消费年龄段、主力价格带与最优折扣档位,并通过 K-Means 客户分群、PCA 品牌综合价值评估和 Isolation Forest 异常订单检测发现潜在商机与异常交易,为产品定价、渠道选品、区域营销、用户运营、库存管理和风险控制提供数据依据,同时为后续可视化展示和经营决策提供结构化 CSV 结果支撑。
数据上传与预处理模块:将原始数据集上传到 HDFS 的 dataset 子目录,用 pandas 完成类型转换、Region 省份简称转全称、浮点列保留 2 位小数,结果落 cosmetics_sales_preprocessed_data.csv 并上传 HDFS。
品牌竞争分析模块:按品牌聚合销售额、销量、品类矩阵、平均评分与好评率,识别头部品牌、长尾品牌、优势品类与口碑差异。
品类销售分析模块:按品类聚合销量、销售额、原价均值/中位数/最值、渠道分布、平均评分与评分方差,识别热门品类、高端品类、渠道偏好与口碑差异。
渠道运营分析模块:按销售渠道聚合销售额、品类结构、折扣档位分布、品牌组合,识别主力渠道、渠道品类定位、定价策略与品牌组合差异。
区域市场分析模块:按销售区域聚合销售额、品类偏好、平均客单价与高客单价订单占比、品牌偏好,识别主力市场、区域品类偏好、购买力差异与品牌偏好差异。
用户画像分析模块:将客户年龄分为青年、青壮年、中年、中老年,聚合销售额、品类偏好、购买力与评分差异,识别核心消费年龄段、年龄段品类偏好与满意度差异。
价格折扣分析模块:将原价分低档、中档、高档、奢侈品,折扣率分 6 档,聚合销售额、销量、平均评分,识别主力价格带、最优折扣档位、折扣销量效应与折扣对评分影响。
销售机会分析模块:用 K-Means 对客户聚类分群,用 PCA 对品牌做综合价值评估,用 Isolation Forest 对订单做异常检测,输出客户簇画像、品牌价值排名、异常订单清单与异常类型说明。
3 系统展示
3.1 功能展示视频
基于Hadoop大数据的化妆品销售数据分析与可视化源码
!!!请点击这里查看功能演示!!!
3.2 大屏页面

3.3 分析页面






3.4 基础页面

4 更多推荐
计算机专业毕业设计新风向,2026年大数据 + AI前沿60个毕设选题全解析,涵盖Hadoop、Spark、机器学习、AI等类型
计算机专业毕业设计选题深度剖析,掌握这些技巧,让你的选题轻松通过,文章附35个优质选题助你顺利通过开题!
【避坑必看】26届计算机毕业设计选题雷区大全,这些毕设题目千万别选!选题雷区深度解析
紧跟风口!2026计算机毕设新赛道:精选三大热门领域下的创新选题, 拒绝平庸!毕设技术亮点+功能创新,双管齐下
纯分享!2026届计算机毕业设计选题全攻略(选题+技术栈+创新点+避坑),这80个题目覆盖所有方向,计算机毕设选题大全收藏
计算机专业毕业设计选题深度剖析,掌握这些技巧,让你的选题轻松通过,文章附35个优质选题助你顺利通过开题!
5 部分功能代码
python
def customer_segmentation_analysis(input_df):
"""
K-Means 客户分群:基于 Customer_Age / Purchase_Quantity /
Customer_Rating / Sales_Revenue 4 维数值特征标准化后聚类。
"""
logger.info("开始执行 客户分群洞察(K-Means) 分析...")
feature_cols = [
"Customer_Age",
"Purchase_Quantity",
"Customer_Rating",
"Sales_Revenue"
]
assembler = VectorAssembler(
inputCols=feature_cols,
outputCol="features_raw",
handleInvalid="skip"
)
assembled_df = assembler.transform(input_df)
scaler = SparkStandardScaler(
inputCol="features_raw",
outputCol="features",
withMean=True,
withStd=True
)
scaler_model = scaler.fit(assembled_df)
scaled_df = scaler_model.transform(assembled_df)
logger.info("肘部法则计算各 K 的 WSSSE:")
for k in [3, 4, 5]:
kmeans = SparkKMeans(
k=k,
seed=42,
featuresCol="features",
predictionCol="prediction",
maxIter=50
)
model = kmeans.fit(scaled_df)
wssse = float(model.summary.trainingCost)
logger.info(f" K={k}, WSSSE={wssse:.2f}")
best_k = 4
logger.info(f"选定 K={best_k}")
final_kmeans = SparkKMeans(
k=best_k,
seed=42,
featuresCol="features",
predictionCol="prediction",
maxIter=100
)
final_model = final_kmeans.fit(scaled_df)
predictions = final_model.transform(scaled_df)
cluster_profile = predictions.groupBy("prediction").agg(
spark_count("ID").alias("customer_count"),
spark_round(spark_avg("Customer_Age"), 2).alias("avg_age"),
spark_round(spark_avg("Purchase_Quantity"), 2).alias("avg_quantity"),
spark_round(spark_avg("Customer_Rating"), 2).alias("avg_rating"),
spark_round(spark_avg("Sales_Revenue"), 2).alias("avg_revenue")
)
total_customer = input_df.count()
cluster_profile = cluster_profile.withColumn(
"customer_share",
spark_round(col("customer_count") / lit(float(total_customer)), 2)
)
cluster_profile_pd = cluster_profile.orderBy("prediction").toPandas()
cluster_profile_pd_sorted = cluster_profile_pd.sort_values(
"avg_revenue",
ascending=True
).reset_index(drop=True)
revenue_labels = [
"低消费群体",
"中低消费群体",
"中高消费群体",
"高消费群体"
]
cluster_profile_pd_sorted["cluster_label"] = revenue_labels
def build_description(row):
return (
f"平均年龄{row['avg_age']:.1f}岁, "
f"平均购买{row['avg_quantity']:.1f}件, "
f"平均评分{row['avg_rating']:.2f}, "
f"平均销售额{row['avg_revenue']:.1f}元"
)
cluster_profile_pd_sorted["cluster_description"] = (
cluster_profile_pd_sorted.apply(build_description, axis=1)
)
cluster_profile_pd_sorted = cluster_profile_pd_sorted.rename(
columns={"prediction": "cluster_id"}
)
cluster_profile_pd_sorted = cluster_profile_pd_sorted[[
"cluster_id",
"cluster_label",
"cluster_description",
"customer_count",
"customer_share",
"avg_age",
"avg_quantity",
"avg_rating",
"avg_revenue"
]]
cluster_profile_pd_sorted = cluster_profile_pd_sorted.sort_values(
"cluster_id"
).reset_index(drop=True)
save_pandas_result(
cluster_profile_pd_sorted,
"customer_segmentation",
"sales_opportunity"
)
logger.info(
"保存到: output/sales_opportunity_analysis/"
"customer_segmentation_analysis.csv 成功"
)
源码项目、定制开发、文档报告、PPT、代码答疑
希望和大家多多交流 ↓↓↓↓↓