【Python大数据+AI毕设实战】化妆品数据可视化分析系统、Hadoop、计算机毕业设计

31 阅读9分钟

🍊作者:计算机毕设匠心工作室

🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。

擅长:按照需求定制化开发项目、 源码、对代码进行完整讲解、文档撰写、ppt制作。

🍊心愿:点赞 👍 收藏 ⭐评论 📝

👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~

Java实战项目

Python实战项目

微信小程序|安卓实战项目

大数据实战项目

PHP|C#.NET|Golang实战项目

🍅 ↓↓文末获取源码联系↓↓🍅

基于大数据的化妆品数据可视化分析系统-功能介绍

本系统全称为《基于Python大数据与AI毕设实战:化妆品数据可视化分析系统》,是一个集数据采集、处理、分析与可视化于一体的综合性大数据应用项目。系统后端采用Python语言及主流的Django框架进行开发,确保了开发的灵活性与高效性。在核心数据处理层面,我们没有采用传统的关系型数据库进行繁重的计算,而是引入了强大的分布式计算框架Apache Spark,通过其核心组件Spark SQL对海量的化妆品数据进行高效的ETL(提取、转换、加载)与深度分析。前端界面则借助Vue.js、ElementUI以及Echarts图表库,将复杂的数据分析结果以直观、动态、交互性强的可视化图表形式呈现给用户,实现了从原始数据到商业洞察的端到端闭环。本项目的亮点在于其“AI分析”模块,通过引入Spark MLlib库中的K-Means聚类算法,对产品的“价格-评分”二维特征进行无监督学习,智能地将市场上的产品划分为“高性价比型”、“奢侈高评型”、“平价实用型”和“高价低评型”等不同群体,为用户提供超越基础统计的消费决策支持。整个系统不仅完整实现了品牌排行、价格区间分布、热门成分挖掘、肤质适应性分析等15项核心业务需求,更是一次将Python技术栈与企业级大数据解决方案相结合的毕业设计级别实战演练。

基于大数据的化妆品数据可视化分析系统-选题背景意义

选题背景 现在的美妆市场真的太卷了,各种品牌、各种产品层出不穷,社交媒体上每天都有无数的美妆博主在推荐。对于一个普通的消费者来说,想买一瓶适合自己的护肤品,简直就像是在信息海洋里捞针。大家会去看成分、看评价、看价格,但这些信息往往分散在各个地方,而且真假难辨,很容易让人感到选择困难。与此同时,对于化妆品公司来说,它们也迫切需要了解市场的真实动态,比如当前哪个品牌的声量最高、哪些成分是消费者追捧的热点、产品的定价策略是否合理、以及针对不同肤质(像干性、油性、敏感性)的产品市场是否饱和。当这些产品数据、用户评价数据、成分数据汇集到一起,就形成了一个相当大的数据集,用传统的Excel或者简单的数据库查询来分析已经非常吃力了。这就为我们利用大数据技术来解决这个问题提供了一个很实际的切入点,用更专业、更高效的工具来梳理这些杂乱的信息,从中挖出有价值的东西。 选题意义 所以说,做这么一个化妆品大数据分析系统,虽然只是一个毕业设计,但它的意义还是挺多方面的。从技术学习的角度看,它是一个非常好的锻炼机会。这个项目不再是简单的“增删改查”管理系统,而是要求我们必须掌握从Python后端开发到Hadoop、Spark大数据处理,再到前端数据可视化的一整套技术链路。亲手搭建一个这样的系统,能让我们对大数据项目从数据预处理、分布式计算到结果呈现的完整流程有一个特别清晰和深入的认识,这比单纯看书本理论要实在得多。从实际应用的角度讲,这个系统也确实能提供一些有用的参考。比如,一个预算有限但又想买好评产品的学生,可以通过系统快速筛选出“高性价比”的产品列表;一个敏感肌用户,可以方便地查看哪些主流品牌对敏感肌更友好,哪些产品品类里适合敏感肌的选择更多。这在一定程度上能帮助消费者做出更明智的购买决策。当然,我们也要谦虚地认识到,作为一个毕设项目,它的分析深度和数据量还远不能和专业的商业智能公司相比,但它作为一个探索性的尝试,验证了大数据技术在消费品市场分析领域的可行性与价值,这就足够了。

基于大数据的化妆品数据可视化分析系统-技术选型

大数据框架:Hadoop+Spark(本次没用Hive,支持定制) 开发语言:Python+Java(两个版本都支持) 后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持) 前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery 详细技术点:Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy 数据库:MySQL

基于大数据的化妆品数据可视化分析系统-视频展示

基于大数据的化妆品数据可视化分析系统-视频展示

基于大数据的化妆品数据可视化分析系统-图片展示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

基于大数据的化妆品数据可视化分析系统-代码展示

from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
from pyspark.sql.types import StringType
# 初始化SparkSession,这是所有Spark应用的入口
spark = SparkSession.builder.appName("CosmeticsAnalysisCoreFunctions").getOrCreate()
def process_hot_ingredients_analysis(df):
    """
    1. 热门化妆品成分分析
    业务逻辑:对Ingredients字段进行清洗和切分,统计出现频率最高的Top 20成分。
    """
    print("开始执行:热门化妆品成分分析...")
    ingredients_df = df.filter(F.col("Ingredients").isNotNull() & ~F.col("Ingredients").contains("Visit the"))
    # 使用split和explode函数将成分字符串拆分成多行
    ingredients_exploded = ingredients_df.withColumn("ingredient", F.explode(F.split(F.col("Ingredients"), ", ")))
    # 对单个成分进行清洗,去除首尾空格并转换为小写
    cleaned_ingredients = ingredients_exploded.withColumn("ingredient", F.lower(F.trim(F.col("ingredient"))))
    # 过滤掉无效或过短的成分名
    valid_ingredients = cleaned_ingredients.filter(F.length(F.col("ingredient")) > 1)
    # 按成分分组计数
    ingredient_counts = valid_ingredients.groupBy("ingredient").count()
    # 按计数降序排列,选出前20名
    top_ingredients = ingredient_counts.orderBy(F.col("count").desc()).limit(20)
    print("热门化妆品成分分析完成。")
    # 为了演示,这里直接展示结果,实际项目中会保存到CSV
    top_ingredients.show(truncate=False)
    return top_ingredients
def process_mainstream_brand_avg_price_analysis(df):
    """
    2. 主流品牌产品均价分析
    业务逻辑:首先找出产品数量最多的Top 10品牌,然后计算这10个品牌的平均产品价格。
    """
    print("开始执行:主流品牌产品均价分析...")
    # 统计每个品牌的产品数量
    brand_counts = df.groupBy("Brand").count()
    # 找出产品数量排名前10的品牌
    top_10_brands_df = brand_counts.orderBy(F.col("count").desc()).limit(10)
    # 获取这10个品牌的名称列表
    top_10_brand_names = [row.Brand for row in top_10_brands_df.collect()]
    # 从原始数据中筛选出这10个品牌的所有产品
    top_brands_data = df.filter(F.col("Brand").isin(top_10_brand_names))
    # 按品牌分组,计算每个品牌的平均价格
    avg_price_df = top_brands_data.groupBy("Brand").agg(F.avg("Price").alias("average_price"))
    # 将平均价格格式化,保留两位小数
    formatted_avg_price_df = avg_price_df.withColumn("average_price", F.round(F.col("average_price"), 2))
    # 按均价降序排列
    result_df = formatted_avg_price_df.orderBy(F.col("average_price").desc())
    print("主流品牌产品均价分析完成。")
    result_df.show(truncate=False)
    return result_df
def process_kmeans_clustering_analysis(df):
    """
    3. 基于价格与评分的用户群体聚类分析 (K-Means)
    业务逻辑:使用K-Means算法对产品的Price和Rank进行聚类,将产品划分为4个不同的群体。
    """
    print("开始执行:K-Means聚类分析...")
    # 数据预处理:过滤掉评分为0的无效数据,并选择需要的列
    cluster_data = df.filter(F.col("Rank") > 0).select("Name", "Price", "Rank")
    # 使用VectorAssembler将特征列(Price, Rank)合并成一个向量列'features'
    assembler = VectorAssembler(inputCols=["Price", "Rank"], outputCol="features")
    assembled_data = assembler.transform(cluster_data)
    # 初始化K-Means模型,设置聚类数量为4
    kmeans = KMeans(k=4, seed=1, featuresCol="features", predictionCol="prediction")
    # 训练模型
    model = kmeans.fit(assembled_data)
    # 使用模型进行预测,生成带有聚类结果的DataFrame
    predictions = model.transform(assembled_data)
    # 定义一个函数,用于将聚类的数字标签映射为有意义的文本描述
    def map_cluster_to_label(prediction):
        # 这个映射逻辑需要根据聚类中心点来定义,这里只是一个示例
        # 实际需要先分析 model.clusterCenters()
        if prediction == 0:
            return "平价实用型"
        elif prediction == 1:
            return "高价低评型"
        elif prediction == 2:
            return "奢侈高评型"
        else:
            return "高性价比型"
    # 将Python函数注册为Spark UDF
    map_udf = F.udf(map_cluster_to_label, StringType())
    # 添加一个新列'cluster_label'来存放文本描述
    final_result = predictions.withColumn("cluster_label", map_udf(F.col("prediction")))
    print("K-Means聚类分析完成。")
    final_result.select("Name", "Price", "Rank", "cluster_label").show(truncate=False)
    return final_result
# 假设数据已经加载到名为df的DataFrame中
# df = spark.read.csv("path/to/your/化妆品数据集.csv", header=True, inferSchema=True)
# 为了能够独立运行,我们创建一个模拟的DataFrame
sample_data = [("A", "BrandX", "Prod1", 10, 4.5, "water, alcohol, glycerin", 1, 0, 1, 0, 0),
               ("B", "BrandY", "Prod2", 200, 4.8, "water, hyaluronic acid", 0, 1, 0, 0, 1),
               ("C", "BrandX", "Prod3", 15, 3.0, "alcohol, fragrance", 0, 0, 0, 1, 0),
               ("D", "BrandZ", "Prod4", 150, 2.5, "Visit the boutique", 1, 1, 1, 1, 1),
               ("E", "BrandY", "Prod5", 25, 4.9, "water, niacinamide, glycerin", 1, 0, 0, 0, 1),
               ("F", "BrandX", "Prod6", 300, 4.9, "pitera, hyaluronic acid", 0, 1, 0, 0, 1)]
columns = ["Label", "Brand", "Name", "Price", "Rank", "Ingredients", "Combination", "Dry", "Normal", "Oily", "Sensitive"]
df = spark.createDataFrame(sample_data, columns)
# 依次调用三个核心处理函数
hot_ingredients_result = process_hot_ingredients_analysis(df)
brand_avg_price_result = process_mainstream_brand_avg_price_analysis(df)
kmeans_result = process_kmeans_clustering_analysis(df)
# 关闭SparkSession
spark.stop()

基于大数据的化妆品数据可视化分析系统-结语

👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~

Java实战项目

Python实战项目

微信小程序|安卓实战项目

大数据实战项目

PHP|C#.NET|Golang实战项目

🍅 主页获取源码联系🍅