基于大数据的宜居城市数据可视化分析系统【Hadoop、 、Django、大数据毕设选题、毕业设计选题指导、源码+论文+答辩】

56 阅读8分钟

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

@TOC

基于大数据的宜居城市数据可视化分析系统介绍

基于大数据的宜居城市数据可视化分析系统是一套综合运用现代大数据技术栈的城市数据分析平台,该系统以Hadoop分布式存储和Spark大数据处理引擎为核心底层架构,通过HDFS实现海量城市数据的可靠存储,利用Spark SQL进行高效的数据查询和分析处理。系统采用前后端分离的设计架构,后端基于Django框架构建RESTful API服务,配合Pandas和NumPy进行数据科学计算和统计分析,前端采用Vue.js框架结合ElementUI组件库打造现代化的用户界面,通过Echarts图表库实现丰富的数据可视化效果。系统功能模块涵盖完整的城市宜居性评估体系,包括经济状况分析模块,深入挖掘城市GDP、人均收入、就业率等经济指标数据;环境质量分析模块,综合空气质量、水质状况、绿化覆盖率等环境数据;公共服务分析模块,评估教育资源、医疗设施、交通便利性等公共服务水平;以及综合幸福度分析模块,通过多维度数据融合计算城市综合宜居指数。系统提供直观的大屏可视化展示界面,运用HTML5、CSS3、JavaScript和jQuery技术实现动态交互效果,将复杂的城市数据通过图表、地图、仪表盘等多种可视化形式直观呈现,同时具备完善的用户管理功能,包括个人信息管理、密码修改等基础功能,整个系统基于MySQL数据库进行数据持久化存储,为城市规划决策和宜居性评估提供了强有力的大数据技术支撑。

基于大数据的宜居城市数据可视化分析系统演示视频

演示视频

基于大数据的宜居城市数据可视化分析系统演示图片

公共服务分析.png

环境质量分析.png

经济状况分析.png

数据大屏上.png

数据大屏下.png

综合幸福度分析.png

基于大数据的宜居城市数据可视化分析系统代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import avg, sum, count, col, when, round
from django.http import JsonResponse
import pandas as pd
import numpy as np
spark = SparkSession.builder.appName("CityLivabilityAnalysis").config("spark.sql.adaptive.enabled", "true").getOrCreate()
def economic_analysis(request):
    city_name = request.GET.get('city_name', '默认城市')
    economic_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/city_data").option("dbtable", "economic_indicators").option("user", "root").option("password", "123456").load()
    filtered_data = economic_df.filter(col("city_name") == city_name)
    gdp_stats = filtered_data.select(avg("gdp").alias("avg_gdp"), sum("gdp").alias("total_gdp"), count("gdp").alias("gdp_count"))
    income_analysis = filtered_data.select(avg("per_capita_income").alias("avg_income"), round(avg("employment_rate"), 2).alias("avg_employment"))
    industry_distribution = filtered_data.groupBy("industry_type").agg(sum("industry_output").alias("total_output"), count("industry_type").alias("industry_count"))
    economic_growth = filtered_data.select(col("year"), col("gdp")).orderBy("year")
    growth_rate_data = []
    previous_gdp = None
    for row in economic_growth.collect():
        if previous_gdp is not None:
            growth_rate = ((row['gdp'] - previous_gdp) / previous_gdp) * 100
            growth_rate_data.append({"year": row['year'], "growth_rate": round(growth_rate, 2)})
        previous_gdp = row['gdp']
    investment_analysis = filtered_data.select(sum("fixed_investment").alias("total_investment"), avg("foreign_investment").alias("avg_foreign_investment"))
    consumption_data = filtered_data.select(avg("consumption_level").alias("avg_consumption"), sum("retail_sales").alias("total_retail"))
    economic_score = filtered_data.select(
        when(col("gdp") > 50000, 90).when(col("gdp") > 30000, 75).when(col("gdp") > 15000, 60).otherwise(45).alias("gdp_score"),
        when(col("employment_rate") > 0.95, 95).when(col("employment_rate") > 0.85, 80).when(col("employment_rate") > 0.75, 65).otherwise(40).alias("employment_score"),
        when(col("per_capita_income") > 80000, 90).when(col("per_capita_income") > 50000, 75).when(col("per_capita_income") > 30000, 60).otherwise(35).alias("income_score")
    )
    final_economic_score = economic_score.select(avg((col("gdp_score") + col("employment_score") + col("income_score")) / 3).alias("overall_economic_score"))
    result_data = {
        "gdp_statistics": gdp_stats.collect()[0].asDict(),
        "income_analysis": income_analysis.collect()[0].asDict(),
        "industry_distribution": [row.asDict() for row in industry_distribution.collect()],
        "growth_trends": growth_rate_data,
        "investment_summary": investment_analysis.collect()[0].asDict(),
        "consumption_summary": consumption_data.collect()[0].asDict(),
        "economic_score": final_economic_score.collect()[0]['overall_economic_score']
    }
    return JsonResponse({"status": "success", "data": result_data, "message": "经济状况分析完成"})
def environment_analysis(request):
    city_name = request.GET.get('city_name', '默认城市')
    env_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/city_data").option("dbtable", "environment_data").option("user", "root").option("password", "123456").load()
    city_env_data = env_df.filter(col("city_name") == city_name)
    air_quality_stats = city_env_data.select(avg("pm25").alias("avg_pm25"), avg("pm10").alias("avg_pm10"), avg("aqi").alias("avg_aqi"), count("aqi").alias("total_records"))
    water_quality_analysis = city_env_data.select(avg("water_quality_index").alias("avg_water_quality"), sum("water_treatment_capacity").alias("total_treatment_capacity"))
    green_coverage_data = city_env_data.select(avg("green_coverage_rate").alias("avg_green_rate"), sum("park_area").alias("total_park_area"), count("park_count").alias("park_number"))
    noise_pollution_stats = city_env_data.select(avg("noise_level").alias("avg_noise"), count(when(col("noise_level") > 70, 1)).alias("high_noise_days"))
    waste_management_analysis = city_env_data.select(sum("waste_generated").alias("total_waste"), sum("waste_recycled").alias("total_recycled"), avg("recycling_rate").alias("avg_recycling_rate"))
    seasonal_air_trends = city_env_data.groupBy("season").agg(avg("pm25").alias("seasonal_pm25"), avg("aqi").alias("seasonal_aqi"), count("season").alias("season_records"))
    pollution_sources = city_env_data.groupBy("pollution_source").agg(count("pollution_source").alias("source_count"), avg("pollution_intensity").alias("avg_intensity"))
    environmental_score = city_env_data.select(
        when(col("aqi") <= 50, 95).when(col("aqi") <= 100, 80).when(col("aqi") <= 150, 65).when(col("aqi") <= 200, 45).otherwise(20).alias("air_score"),
        when(col("water_quality_index") >= 90, 90).when(col("water_quality_index") >= 70, 75).when(col("water_quality_index") >= 50, 60).otherwise(30).alias("water_score"),
        when(col("green_coverage_rate") >= 0.4, 95).when(col("green_coverage_rate") >= 0.3, 80).when(col("green_coverage_rate") >= 0.2, 65).otherwise(40).alias("green_score"),
        when(col("noise_level") <= 55, 90).when(col("noise_level") <= 65, 75).when(col("noise_level") <= 75, 60).otherwise(35).alias("noise_score")
    )
    comprehensive_env_score = environmental_score.select(avg((col("air_score") + col("water_score") + col("green_score") + col("noise_score")) / 4).alias("overall_env_score"))
    result_data = {
        "air_quality": air_quality_stats.collect()[0].asDict(),
        "water_quality": water_quality_analysis.collect()[0].asDict(),
        "green_coverage": green_coverage_data.collect()[0].asDict(),
        "noise_pollution": noise_pollution_stats.collect()[0].asDict(),
        "waste_management": waste_management_analysis.collect()[0].asDict(),
        "seasonal_trends": [row.asDict() for row in seasonal_air_trends.collect()],
        "pollution_analysis": [row.asDict() for row in pollution_sources.collect()],
        "environment_score": comprehensive_env_score.collect()[0]['overall_env_score']
    }
    return JsonResponse({"status": "success", "data": result_data, "message": "环境质量分析完成"})
def comprehensive_happiness_analysis(request):
    city_name = request.GET.get('city_name', '默认城市')
    happiness_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/city_data").option("dbtable", "happiness_indicators").option("user", "root").option("password", "123456").load()
    city_happiness_data = happiness_df.filter(col("city_name") == city_name)
    education_analysis = city_happiness_data.select(avg("education_satisfaction").alias("avg_education_satisfaction"), sum("school_count").alias("total_schools"), avg("teacher_student_ratio").alias("avg_teacher_ratio"))
    healthcare_analysis = city_happiness_data.select(avg("healthcare_satisfaction").alias("avg_healthcare_satisfaction"), sum("hospital_count").alias("total_hospitals"), avg("medical_coverage_rate").alias("avg_medical_coverage"))
    transportation_analysis = city_happiness_data.select(avg("transport_satisfaction").alias("avg_transport_satisfaction"), avg("commute_time").alias("avg_commute_time"), sum("public_transport_coverage").alias("total_transport_coverage"))
    housing_analysis = city_happiness_data.select(avg("housing_satisfaction").alias("avg_housing_satisfaction"), avg("housing_price_ratio").alias("avg_price_ratio"), avg("living_space").alias("avg_living_space"))
    safety_analysis = city_happiness_data.select(avg("safety_index").alias("avg_safety_index"), count(when(col("crime_rate") < 0.01, 1)).alias("low_crime_areas"), avg("emergency_response_time").alias("avg_response_time"))
    cultural_recreation_analysis = city_happiness_data.select(avg("cultural_satisfaction").alias("avg_cultural_satisfaction"), sum("cultural_venues").alias("total_venues"), avg("recreation_facilities").alias("avg_recreation_facilities"))
    social_cohesion_analysis = city_happiness_data.select(avg("community_engagement").alias("avg_community_engagement"), avg("social_trust_index").alias("avg_social_trust"), avg("volunteer_participation").alias("avg_volunteer_rate"))
    happiness_score_components = city_happiness_data.select(
        when(col("education_satisfaction") >= 8, 90).when(col("education_satisfaction") >= 6, 75).when(col("education_satisfaction") >= 4, 60).otherwise(40).alias("education_score"),
        when(col("healthcare_satisfaction") >= 8, 85).when(col("healthcare_satisfaction") >= 6, 70).when(col("healthcare_satisfaction") >= 4, 55).otherwise(35).alias("healthcare_score"),
        when(col("transport_satisfaction") >= 8, 80).when(col("transport_satisfaction") >= 6, 65).when(col("transport_satisfaction") >= 4, 50).otherwise(30).alias("transport_score"),
        when(col("housing_satisfaction") >= 8, 85).when(col("housing_satisfaction") >= 6, 70).when(col("housing_satisfaction") >= 4, 55).otherwise(35).alias("housing_score"),
        when(col("safety_index") >= 9, 95).when(col("safety_index") >= 7, 80).when(col("safety_index") >= 5, 65).otherwise(40).alias("safety_score"),
        when(col("cultural_satisfaction") >= 8, 75).when(col("cultural_satisfaction") >= 6, 60).when(col("cultural_satisfaction") >= 4, 45).otherwise(25).alias("cultural_score")
    )
    overall_happiness_score = happiness_score_components.select(avg((col("education_score") + col("healthcare_score") + col("transport_score") + col("housing_score") + col("safety_score") + col("cultural_score")) / 6).alias("comprehensive_happiness_score"))
    happiness_ranking_data = city_happiness_data.select(col("city_name"), (col("education_satisfaction") + col("healthcare_satisfaction") + col("transport_satisfaction") + col("housing_satisfaction") + col("safety_index") + col("cultural_satisfaction")).alias("total_happiness_points")).orderBy(col("total_happiness_points").desc())
    result_data = {
        "education_metrics": education_analysis.collect()[0].asDict(),
        "healthcare_metrics": healthcare_analysis.collect()[0].asDict(),
        "transportation_metrics": transportation_analysis.collect()[0].asDict(),
        "housing_metrics": housing_analysis.collect()[0].asDict(),
        "safety_metrics": safety_analysis.collect()[0].asDict(),
        "cultural_metrics": cultural_recreation_analysis.collect()[0].asDict(),
        "social_cohesion": social_cohesion_analysis.collect()[0].asDict(),
        "happiness_score": overall_happiness_score.collect()[0]['comprehensive_happiness_score'],
        "city_ranking": [row.asDict() for row in happiness_ranking_data.limit(10).collect()]
    }
    return JsonResponse({"status": "success", "data": result_data, "message": "综合幸福度分析完成"})

基于大数据的宜居城市数据可视化分析系统文档展示

文档.png

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