【数据分析】基于大数据的葡萄酒品质数据可视化分析系统 | 大数据毕设实战项目 选题推荐 文档指导+ppt+运行部署 Hadoop+SPark+java

32 阅读5分钟

💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

基于大数据的葡萄酒品质数据可视化分析系统介绍

本系统是一套基于Hadoop+Spark大数据技术栈的葡萄酒品质数据可视化分析平台,专门针对海量葡萄酒样本数据进行分布式存储与快速分析。系统采用HDFS作为底层分布式文件系统存储原始数据集,通过Spark引擎实现数据的并行化处理和Spark SQL查询分析,结合Pandas和NumPy进行数据清洗与统计计算。后端基于Django框架构建RESTful接口,前端采用Vue+ElementUI+Echarts技术栈实现交互式数据可视化展示,用户可以通过系统首页直观查看葡萄酒品质分布图表,在统计分析模块深度挖掘各理化指标与品质等级的关联关系,通过账户中心管理个人信息,系统管理模块则提供数据集上传、任务调度等功能。整个系统从Spark环境搭建、数据预处理、模型分析到前端图表渲染形成完整的大数据处理链路,适合作为计算机专业大数据方向的毕业设计项目,技术覆盖面广且实用性强。

基于大数据的葡萄酒品质数据可视化分析系统演示视频

演示视频

基于大数据的葡萄酒品质数据可视化分析系统演示图片

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

基于大数据的葡萄酒品质数据可视化分析系统代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, avg, count, stddev, corr, when, round as spark_round
from django.http import JsonResponse
from django.views.decorators.http import require_http_methods
import json
spark = SparkSession.builder.appName("WineQualityAnalysis").config("spark.sql.shuffle.partitions", "4").config("spark.executor.memory", "2g").getOrCreate()
@require_http_methods(["POST"])
def upload_and_analyze_dataset(request):
    try:
        uploaded_file = request.FILES.get('dataset')
        if not uploaded_file:
            return JsonResponse({'code': 400, 'message': '未检测到上传文件'})
        file_path = f"/tmp/wine_data_{request.user.id}.csv"
        with open(file_path, 'wb+') as destination:
            for chunk in uploaded_file.chunks():
                destination.write(chunk)
        df = spark.read.csv(file_path, header=True, inferSchema=True)
        df = df.dropna()
        total_count = df.count()
        if total_count == 0:
            return JsonResponse({'code': 400, 'message': '数据集为空或格式错误'})
        quality_distribution = df.groupBy("quality").agg(count("*").alias("count")).orderBy("quality").collect()
        quality_stats = [{"quality": row.quality, "count": row.count, "percentage": round(row.count / total_count * 100, 2)} for row in quality_distribution]
        numeric_columns = [field.name for field in df.schema.fields if field.dataType.simpleString() in ['int', 'double', 'float'] and field.name != 'quality']
        column_stats = {}
        for col_name in numeric_columns:
            stats = df.select(avg(col(col_name)).alias("mean"), stddev(col(col_name)).alias("stddev")).first()
            column_stats[col_name] = {"mean": round(float(stats["mean"]), 4), "stddev": round(float(stats["stddev"]), 4)}
        df.write.mode("overwrite").parquet(f"hdfs://localhost:9000/wine_data/user_{request.user.id}/raw_data.parquet")
        return JsonResponse({'code': 200, 'message': '数据集上传并分析成功', 'data': {'total_samples': total_count, 'quality_distribution': quality_stats, 'feature_statistics': column_stats}})
    except Exception as e:
        return JsonResponse({'code': 500, 'message': f'数据处理异常: {str(e)}'})
@require_http_methods(["GET"])
def get_correlation_analysis(request):
    try:
        user_id = request.user.id
        df = spark.read.parquet(f"hdfs://localhost:9000/wine_data/user_{user_id}/raw_data.parquet")
        feature_columns = [field.name for field in df.schema.fields if field.dataType.simpleString() in ['int', 'double', 'float']]
        correlation_matrix = []
        for col1 in feature_columns:
            row_data = {"feature": col1, "correlations": {}}
            for col2 in feature_columns:
                if col1 != col2:
                    corr_value = df.stat.corr(col1, col2)
                    row_data["correlations"][col2] = round(corr_value, 4)
            correlation_matrix.append(row_data)
        quality_correlations = {}
        for col_name in [c for c in feature_columns if c != 'quality']:
            corr_with_quality = df.stat.corr(col_name, "quality")
            quality_correlations[col_name] = round(corr_with_quality, 4)
        sorted_quality_corr = sorted(quality_correlations.items(), key=lambda x: abs(x[1]), reverse=True)
        top_features = [{"feature": k, "correlation": v} for k, v in sorted_quality_corr[:5]]
        return JsonResponse({'code': 200, 'message': '相关性分析完成', 'data': {'correlation_matrix': correlation_matrix, 'top_quality_features': top_features}})
    except Exception as e:
        return JsonResponse({'code': 500, 'message': f'相关性分析失败: {str(e)}'})
@require_http_methods(["POST"])
def generate_quality_prediction_report(request):
    try:
        user_id = request.user.id
        params = json.loads(request.body)
        threshold_high = params.get('threshold_high', 7)
        threshold_low = params.get('threshold_low', 5)
        df = spark.read.parquet(f"hdfs://localhost:9000/wine_data/user_{user_id}/raw_data.parquet")
        df_classified = df.withColumn("quality_level", when(col("quality") >= threshold_high, "高品质").when(col("quality") >= threshold_low, "中等品质").otherwise("低品质"))
        level_distribution = df_classified.groupBy("quality_level").agg(count("*").alias("count")).collect()
        distribution_data = {row.quality_level: row.count for row in level_distribution}
        total = sum(distribution_data.values())
        distribution_percentage = {k: round(v / total * 100, 2) for k, v in distribution_data.items()}
        numeric_features = [field.name for field in df.schema.fields if field.dataType.simpleString() in ['int', 'double', 'float'] and field.name != 'quality']
        feature_analysis_by_level = {}
        for level in ["高品质", "中等品质", "低品质"]:
            level_df = df_classified.filter(col("quality_level") == level)
            feature_stats = {}
            for feature in numeric_features:
                stats = level_df.select(avg(col(feature)).alias("mean"), stddev(col(feature)).alias("stddev")).first()
                feature_stats[feature] = {"mean": round(float(stats["mean"]), 4), "stddev": round(float(stats["stddev"]), 4) if stats["stddev"] else 0}
            feature_analysis_by_level[level] = feature_stats
        high_quality_df = df_classified.filter(col("quality_level") == "高品质")
        low_quality_df = df_classified.filter(col("quality_level") == "低品质")
        key_differences = {}
        for feature in numeric_features:
            high_mean = high_quality_df.select(avg(col(feature))).first()[0]
            low_mean = low_quality_df.select(avg(col(feature))).first()[0]
            if high_mean and low_mean:
                diff_percentage = round((high_mean - low_mean) / low_mean * 100, 2)
                key_differences[feature] = {"high_quality_mean": round(float(high_mean), 4), "low_quality_mean": round(float(low_mean), 4), "difference_percentage": diff_percentage}
        sorted_differences = sorted(key_differences.items(), key=lambda x: abs(x[1]["difference_percentage"]), reverse=True)[:5]
        key_factors = [{"feature": k, **v} for k, v in sorted_differences]
        return JsonResponse({'code': 200, 'message': '品质预测报告生成成功', 'data': {'quality_distribution': distribution_data, 'distribution_percentage': distribution_percentage, 'feature_analysis_by_level': feature_analysis_by_level, 'key_differentiating_factors': key_factors}})
    except Exception as e:
        return JsonResponse({'code': 500, 'message': f'报告生成失败: {str(e)}'})

基于大数据的葡萄酒品质数据可视化分析系统文档展示

在这里插入图片描述

💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目