💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
城镇居民食品消费量数据分析与可视化系统介绍
基于大数据的城镇居民食品消费量数据分析与可视化系统是一个综合运用现代大数据技术的智能分析平台,该系统采用Hadoop分布式文件系统(HDFS)作为数据存储基础,结合Spark大数据处理框架实现海量食品消费数据的高效处理与分析。系统后端采用Spring Boot框架构建,前端使用Vue+ElementUI+Echarts技术栈打造现代化的用户交互界面,通过MySQL数据库存储结构化数据,利用Spark SQL、Pandas、NumPy等数据处理工具实现复杂的统计分析功能。该系统具备完整的用户管理功能,包括系统首页、个人中心、密码修改等基础模块,更重要的是提供了强大的数据分析能力,涵盖食品消费数据管理、消费者趋势分析、消费数据统计分析、食品品类对比分析、区域消费差异分析以及年度消费趋势分析等核心功能模块。通过大屏可视化技术,系统能够直观展示城镇居民在不同食品品类、不同地区、不同时间维度下的消费模式和趋势变化,为政府部门制定食品政策、企业进行市场决策提供科学的数据支撑,真正实现了大数据技术在民生领域的实际应用,体现了现代信息技术服务社会发展的重要价值。
城镇居民食品消费量数据分析与可视化系统演示视频
城镇居民食品消费量数据分析与可视化系统演示图片
城镇居民食品消费量数据分析与可视化系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum, avg, count, desc, asc, year, month, when, round
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, FloatType, DateType
import pandas as pd
import numpy as np
from django.http import JsonResponse
from django.views.decorators.http import require_http_methods
import json
spark = SparkSession.builder.appName("FoodConsumptionAnalysis").config("spark.sql.adaptive.enabled", "true").config("spark.sql.adaptive.coalescePartitions.enabled", "true").getOrCreate()
def food_consumption_data_management(request):
if request.method == 'POST':
data = json.loads(request.body)
consumption_data = spark.createDataFrame([(data['consumer_id'], data['food_category'], data['consumption_amount'], data['consumption_date'], data['region'], data['price'])], ['consumer_id', 'food_category', 'consumption_amount', 'consumption_date', 'region', 'price'])
consumption_data.write.mode('append').option("url", "jdbc:mysql://localhost:3306/food_db").option("dbtable", "consumption_records").option("user", "root").option("password", "password").format("jdbc").save()
return JsonResponse({'status': 'success', 'message': '食品消费数据添加成功'})
elif request.method == 'GET':
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/food_db").option("dbtable", "consumption_records").option("user", "root").option("password", "password").load()
df_filtered = df.filter(col("consumption_amount") > 0).orderBy(desc("consumption_date"))
result_data = df_filtered.limit(1000).toPandas().to_dict('records')
total_records = df.count()
avg_consumption = df.agg(avg("consumption_amount")).collect()[0][0]
return JsonResponse({'status': 'success', 'data': result_data, 'total': total_records, 'avg_consumption': round(avg_consumption, 2)})
elif request.method == 'PUT':
data = json.loads(request.body)
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/food_db").option("dbtable", "consumption_records").option("user", "root").option("password", "password").load()
updated_df = df.withColumn("consumption_amount", when(col("consumer_id") == data['consumer_id'], data['consumption_amount']).otherwise(col("consumption_amount"))).withColumn("food_category", when(col("consumer_id") == data['consumer_id'], data['food_category']).otherwise(col("food_category")))
updated_df.write.mode('overwrite').option("url", "jdbc:mysql://localhost:3306/food_db").option("dbtable", "consumption_records").option("user", "root").option("password", "password").format("jdbc").save()
return JsonResponse({'status': 'success', 'message': '食品消费数据更新成功'})
def consumer_trend_analysis(request):
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/food_db").option("dbtable", "consumption_records").option("user", "root").option("password", "password").load()
df_with_time = df.withColumn("year", year("consumption_date")).withColumn("month", month("consumption_date"))
monthly_trend = df_with_time.groupBy("year", "month").agg(sum("consumption_amount").alias("total_consumption"), avg("consumption_amount").alias("avg_consumption"), count("consumer_id").alias("consumer_count")).orderBy("year", "month")
category_trend = df_with_time.groupBy("food_category", "year", "month").agg(sum("consumption_amount").alias("category_total"), avg("price").alias("avg_price")).orderBy("year", "month", desc("category_total"))
regional_trend = df_with_time.groupBy("region", "year", "month").agg(sum("consumption_amount").alias("region_total"), count("consumer_id").alias("region_consumers")).orderBy("year", "month", desc("region_total"))
growth_rate_df = monthly_trend.withColumn("prev_consumption", monthly_trend.total_consumption).withColumn("growth_rate", ((col("total_consumption") - col("prev_consumption")) / col("prev_consumption") * 100))
seasonal_pattern = df_with_time.groupBy("month").agg(avg("consumption_amount").alias("seasonal_avg"), sum("consumption_amount").alias("seasonal_total")).orderBy("month")
top_consumers = df.groupBy("consumer_id").agg(sum("consumption_amount").alias("total_spent"), count("consumer_id").alias("purchase_frequency")).orderBy(desc("total_spent")).limit(20)
trend_data = {
'monthly_trend': monthly_trend.toPandas().to_dict('records'),
'category_trend': category_trend.toPandas().to_dict('records'),
'regional_trend': regional_trend.toPandas().to_dict('records'),
'growth_rate': growth_rate_df.toPandas().to_dict('records'),
'seasonal_pattern': seasonal_pattern.toPandas().to_dict('records'),
'top_consumers': top_consumers.toPandas().to_dict('records')
}
return JsonResponse({'status': 'success', 'trend_analysis': trend_data})
def regional_consumption_difference_analysis(request):
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/food_db").option("dbtable", "consumption_records").option("user", "root").option("password", "password").load()
regional_summary = df.groupBy("region").agg(sum("consumption_amount").alias("total_consumption"), avg("consumption_amount").alias("avg_consumption"), count("consumer_id").alias("consumer_count"), avg("price").alias("avg_price")).orderBy(desc("total_consumption"))
regional_category = df.groupBy("region", "food_category").agg(sum("consumption_amount").alias("category_consumption"), avg("price").alias("category_avg_price")).orderBy("region", desc("category_consumption"))
consumption_per_capita = regional_summary.withColumn("per_capita_consumption", col("total_consumption") / col("consumer_count")).select("region", "per_capita_consumption", "avg_consumption", "consumer_count").orderBy(desc("per_capita_consumption"))
price_comparison = df.groupBy("region", "food_category").agg(avg("price").alias("avg_regional_price")).orderBy("food_category", "region")
regional_diversity = df.groupBy("region").agg(count("food_category").alias("category_diversity")).orderBy(desc("category_diversity"))
high_consumption_regions = regional_summary.filter(col("total_consumption") > regional_summary.agg(avg("total_consumption")).collect()[0][0]).select("region", "total_consumption", "avg_consumption")
consumption_variance = df.groupBy("region").agg(avg("consumption_amount").alias("mean_consumption")).withColumn("variance_calc", col("mean_consumption")).select("region", "mean_consumption", "variance_calc")
seasonal_regional = df.withColumn("month", month("consumption_date")).groupBy("region", "month").agg(sum("consumption_amount").alias("monthly_regional_total")).orderBy("region", "month")
regional_analysis_data = {
'regional_summary': regional_summary.toPandas().to_dict('records'),
'regional_category': regional_category.toPandas().to_dict('records'),
'per_capita_consumption': consumption_per_capita.toPandas().to_dict('records'),
'price_comparison': price_comparison.toPandas().to_dict('records'),
'regional_diversity': regional_diversity.toPandas().to_dict('records'),
'high_consumption_regions': high_consumption_regions.toPandas().to_dict('records'),
'consumption_variance': consumption_variance.toPandas().to_dict('records'),
'seasonal_regional': seasonal_regional.toPandas().to_dict('records')
}
return JsonResponse({'status': 'success', 'regional_analysis': regional_analysis_data})
城镇居民食品消费量数据分析与可视化系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目