💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
护肤品店铺运营数据可视化分析系统介绍
本系统《基于大数据的护肤品店铺运营数据可视化分析系统》以 Hadoop 构建分布式存储底座,利用 HDFS 集中存放店铺累积的订单、用户、渠道日志等 TB 级原始数据;通过 Spark 与 Spark SQL 完成分布式清洗、聚合与特征工程,结合 Pandas、NumPy 在 Python 侧进行深度探索,或以 Java 侧 Spring Boot 整合 MyBatis 将关键指标落 MySQL 供后续查询;前端基于 Vue、ElementUI 与 Echarts,把后端 Django 或 Spring Boot 暴露的 REST 接口封装成交互式仪表盘,实时呈现营销渠道效能、用户消费行为、增长活跃及画像四大主题,管理员可在用户中心修改密码、维护个人信息,运营人员通过系统公告掌握任务进度,最终帮助店铺用数据驱动护肤品的精准营销与库存优化。
护肤品店铺运营数据可视化分析系统演示视频
护肤品店铺运营数据可视化分析系统演示图片
护肤品店铺运营数据可视化分析系统代码展示
# 1. 营销渠道效能分析:计算昨日各渠道ROI并写MySQL
def channel_roi_etl():
spark = SparkSession.builder.appName("channelRoi").getOrCreate()
df_order = spark.read.parquet("hdfs://master:9000/skincare/order/*.parquet")
df_cost = spark.read.parquet("hdfs://master:9000/skincare/channel_cost/*.parquet")
df_order.createOrReplaceTempView("orders")
df_cost.createOrReplaceTempView("costs")
roi_sql = """
SELECT channel,
SUM(revenue) AS revenue,
SUM(cost) AS cost,
ROUND(SUM(revenue)/SUM(cost),2) AS roi
FROM (
SELECT channel,
CAST(order_amount AS DOUBLE) AS revenue,
0 AS cost
FROM orders
WHERE dt = CURRENT_DATE - INTERVAL 1 DAY
UNION ALL
SELECT channel,
0 AS revenue,
CAST(cost_amount AS DOUBLE) AS cost
FROM costs
WHERE dt = CURRENT_DATE - INTERVAL 1 DAY
) GROUP BY channel
"""
roi_df = spark.sql(roi_sql).coalesce(1)
roi_df.write.format("jdbc") \
.option("url", "jdbc:mysql://localhost:3306/skincare") \
.option("dbtable", "channel_roi") \
.option("user", "root").option("password", "123456") \
.mode("overwrite").save()
spark.stop()
# 2. 用户消费行为分析:每月用户RFM聚类
def rfm_cluster():
spark = SparkSession.builder.appName("rfm").getOrCreate()
df = spark.read.parquet("hdfs://master:9000/skincare/order/*.parquet")
df.createOrReplaceTempView("orders")
rfm_sql = """
SELECT user_id,
MAX(order_date) AS last_date,
COUNT(order_id) AS frequency,
SUM(order_amount) AS monetary
FROM orders
WHERE order_date >= DATE_SUB(CURRENT_DATE, 365)
GROUP BY user_id
"""
rfm = spark.sql(rfm_sql)
rfm = rfm.withColumn("recency", datediff(current_date(), col("last_date")))
assembler = VectorAssembler(inputCols=["recency", "frequency", "monetary"], outputCol="features")
scaler = StandardScaler(inputCol="features", outputCol="scaled")
kmeans = KMeans(k=5, seed=1, featuresCol="scaled")
pipeline = Pipeline(stages=[assembler, scaler, kmeans])
model = pipeline.fit(rfm)
clustered = model.transform(rfm)
clustered.select("user_id", "prediction").write.format("jdbc") \
.option("url", "jdbc:mysql://localhost:3306/skincare") \
.option("dbtable", "user_rfm") \
.option("user", "root").option("password", "123456") \
.mode("overwrite").save()
spark.stop()
# 3. 用户画像分析:实时标签生成并推给前端
from django.db import connection
def refresh_user_profile():
cursor = connection.cursor()
cursor.execute("""
SELECT user_id,
gender,
age,
skin_type,
SUM(order_amount) AS total_amount,
COUNT(order_id) AS order_cnt
FROM t_user u
JOIN t_order o ON u.id = o.user_id
GROUP BY user_id
""")
rows = cursor.fetchall()
profile_list = []
for r in rows:
tag = []
if r[5] > 5000:
tag.append("高价值")
if r[4] < 25:
tag.append("Z世代")
if r[3] == "敏感肌":
tag.append("敏感肌")
profile_list.append({
"user_id": r[0],
"gender": r[1],
"age": r[2],
"skin_type": r[3],
"total_amount": r[4],
"order_cnt": r[5],
"tags": ",".join(tag)
})
cursor.execute("TRUNCATE TABLE user_profile")
for p in profile_list:
cursor.execute("""
INSERT INTO user_profile(user_id,gender,age,skin_type,total_amount,order_cnt,tags)
VALUES(%s,%s,%s,%s,%s,%s,%s)
""", [p["user_id"], p["gender"], p["age"], p["skin_type"], p["total_amount"], p["order_cnt"], p["tags"]])
connection.commit()
护肤品店铺运营数据可视化分析系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目