💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐
基于大数据的全球能源消耗量数据分析系统介绍
全球能源消耗量数据分析系统是一套基于Hadoop+Spark大数据技术架构的综合性数据分析平台,采用Python作为主要开发语言,结合Django后端框架与Vue+ElementUI前端技术栈构建而成。系统运用HDFS分布式文件系统存储海量能源数据,通过Spark SQL进行高效的数据查询与处理,利用Pandas和NumPy进行科学计算分析,最终通过Echarts实现丰富的数据可视化展示。平台涵盖系统首页、用户管理、能源消耗数据管理、全球宏观趋势分析、国家维度对比分析、能源可持续性分析、能源消耗效率分析等核心功能模块,能够处理全球各国不同时间维度的能源消耗数据,为用户提供多角度的数据洞察与分析结果,支持能源消耗趋势预测、国别对比、效率评估等多元化分析需求。
基于大数据的全球能源消耗量数据分析系统演示视频
基于大数据的全球能源消耗量数据分析系统演示图片
基于大数据的全球能源消耗量数据分析系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
from pyspark.sql.types import *
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import pandas as pd
import numpy as np
import json
spark = SparkSession.builder.appName("GlobalEnergyAnalysis").master("local[*]").getOrCreate()
def global_trend_analysis(request):
try:
energy_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/energy_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "energy_consumption").option("user", "root").option("password", "password").load()
yearly_consumption = energy_df.groupBy("year").agg(sum("total_consumption").alias("total"), avg("total_consumption").alias("average"), count("country_id").alias("country_count")).orderBy("year")
trend_data = yearly_consumption.collect()
growth_rates = []
for i in range(1, len(trend_data)):
current_total = trend_data[i]["total"]
previous_total = trend_data[i-1]["total"]
growth_rate = ((current_total - previous_total) / previous_total) * 100
growth_rates.append({"year": trend_data[i]["year"], "growth_rate": round(growth_rate, 2)})
pandas_df = pd.DataFrame([row.asDict() for row in trend_data])
pandas_df["moving_avg"] = pandas_df["total"].rolling(window=3).mean()
volatility = np.std(pandas_df["total"]) / np.mean(pandas_df["total"]) * 100
max_consumption_year = pandas_df.loc[pandas_df["total"].idxmax()]
min_consumption_year = pandas_df.loc[pandas_df["total"].idxmin()]
result_data = {"trend_data": [row.asDict() for row in trend_data], "growth_rates": growth_rates, "volatility": round(volatility, 2), "max_year": {"year": int(max_consumption_year["year"]), "consumption": float(max_consumption_year["total"])}, "min_year": {"year": int(min_consumption_year["year"]), "consumption": float(min_consumption_year["total"])}, "moving_averages": pandas_df[["year", "moving_avg"]].dropna().to_dict("records")}
return JsonResponse({"status": "success", "data": result_data})
except Exception as e:
return JsonResponse({"status": "error", "message": str(e)})
def country_comparison_analysis(request):
try:
country_list = json.loads(request.POST.get("countries", "[]"))
start_year = int(request.POST.get("start_year", 2010))
end_year = int(request.POST.get("end_year", 2023))
energy_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/energy_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "energy_consumption").option("user", "root").option("password", "password").load()
country_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/energy_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "countries").option("user", "root").option("password", "password").load()
joined_df = energy_df.join(country_df, energy_df.country_id == country_df.id).filter((col("year") >= start_year) & (col("year") <= end_year) & (col("country_name").isin(country_list)))
country_comparison = joined_df.groupBy("country_name", "year").agg(sum("total_consumption").alias("yearly_consumption"), avg("oil_consumption").alias("avg_oil"), avg("gas_consumption").alias("avg_gas"), avg("coal_consumption").alias("avg_coal"), avg("renewable_consumption").alias("avg_renewable")).orderBy("country_name", "year")
comparison_data = country_comparison.collect()
pandas_comparison = pd.DataFrame([row.asDict() for row in comparison_data])
country_rankings = pandas_comparison.groupby("country_name")["yearly_consumption"].sum().sort_values(ascending=False).reset_index()
country_rankings["rank"] = range(1, len(country_rankings) + 1)
energy_mix_analysis = pandas_comparison.groupby("country_name").agg({"avg_oil": "mean", "avg_gas": "mean", "avg_coal": "mean", "avg_renewable": "mean"}).reset_index()
energy_mix_analysis["renewable_ratio"] = energy_mix_analysis["avg_renewable"] / (energy_mix_analysis["avg_oil"] + energy_mix_analysis["avg_gas"] + energy_mix_analysis["avg_coal"] + energy_mix_analysis["avg_renewable"]) * 100
correlation_matrix = pandas_comparison[["yearly_consumption", "avg_oil", "avg_gas", "avg_coal", "avg_renewable"]].corr()
yearly_growth = pandas_comparison.sort_values(["country_name", "year"]).groupby("country_name")["yearly_consumption"].pct_change().groupby(pandas_comparison.sort_values(["country_name", "year"])["country_name"]).mean() * 100
result_data = {"comparison_data": [row.asDict() for row in comparison_data], "rankings": country_rankings.to_dict("records"), "energy_mix": energy_mix_analysis.round(2).to_dict("records"), "correlation": correlation_matrix.round(3).to_dict(), "growth_rates": yearly_growth.round(2).to_dict()}
return JsonResponse({"status": "success", "data": result_data})
except Exception as e:
return JsonResponse({"status": "error", "message": str(e)})
def energy_efficiency_analysis(request):
try:
energy_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/energy_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "energy_consumption").option("user", "root").option("password", "password").load()
gdp_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/energy_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "economic_data").option("user", "root").option("password", "password").load()
population_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/energy_db").option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "population_data").option("user", "root").option("password", "password").load()
efficiency_df = energy_df.join(gdp_df, (energy_df.country_id == gdp_df.country_id) & (energy_df.year == gdp_df.year)).join(population_df, (energy_df.country_id == population_df.country_id) & (energy_df.year == population_df.year))
efficiency_calc = efficiency_df.withColumn("energy_intensity", col("total_consumption") / col("gdp")).withColumn("per_capita_consumption", col("total_consumption") / col("population")).withColumn("efficiency_score", 1 / col("energy_intensity") * 1000)
efficiency_metrics = efficiency_calc.groupBy("country_id", "year").agg(avg("energy_intensity").alias("avg_intensity"), avg("per_capita_consumption").alias("avg_per_capita"), avg("efficiency_score").alias("efficiency_score")).orderBy("year", "efficiency_score")
efficiency_data = efficiency_metrics.collect()
pandas_efficiency = pd.DataFrame([row.asDict() for row in efficiency_data])
efficiency_rankings = pandas_efficiency.groupby("country_id")["efficiency_score"].mean().sort_values(ascending=False).head(20).reset_index()
efficiency_rankings["rank"] = range(1, len(efficiency_rankings) + 1)
intensity_trends = pandas_efficiency.groupby("year")["avg_intensity"].mean().reset_index()
intensity_trends["trend"] = intensity_trends["avg_intensity"].pct_change() * 100
efficiency_categories = pd.cut(pandas_efficiency["efficiency_score"], bins=[0, 50, 100, 200, float("inf")], labels=["Low", "Medium", "High", "Very High"])
category_distribution = efficiency_categories.value_counts().to_dict()
improvement_analysis = pandas_efficiency.sort_values(["country_id", "year"]).groupby("country_id")["efficiency_score"].apply(lambda x: (x.iloc[-1] - x.iloc[0]) / x.iloc[0] * 100 if len(x) > 1 else 0).sort_values(ascending=False).head(10)
result_data = {"efficiency_data": [row.asDict() for row in efficiency_data], "rankings": efficiency_rankings.to_dict("records"), "intensity_trends": intensity_trends.dropna().to_dict("records"), "category_distribution": category_distribution, "improvement_leaders": improvement_analysis.to_dict()}
return JsonResponse({"status": "success", "data": result_data})
except Exception as e:
return JsonResponse({"status": "error", "message": str(e)})
基于大数据的全球能源消耗量数据分析系统文档展示
💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐