💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐
新能源汽车数据分析系统介绍
新能源汽车数据分析系统是一个基于Hadoop+Spark大数据架构的综合性分析平台,专门针对新能源汽车领域的海量数据处理需求而设计开发。该系统采用Python语言结合Django后端框架构建,前端运用Vue+ElementUI+Echarts技术栈实现数据可视化展示,通过Spark SQL和Pandas、NumPy等数据处理工具对新能源汽车的各类信息进行深度挖掘和分析。系统集成了汽车信息管理、用户评论分析、汽车配置对比、交流互动社区等多个功能模块,能够实现对新能源汽车市场数据的实时采集、存储、处理和分析。平台支持用户通过Web界面进行汽车数据查询、趋势分析、性能对比等操作,同时提供论坛交流、留言反馈、举报管理等社交功能,为用户提供全方位的新能源汽车数据分析服务。整个系统基于HDFS分布式文件系统进行数据存储,利用Spark的内存计算优势处理大规模汽车数据,结合MySQL数据库管理用户信息和业务数据,形成了一套完整的新能源汽车数据分析解决方案。
新能源汽车数据分析系统演示视频
新能源汽车数据分析系统演示图片
新能源汽车数据分析系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
from pyspark.sql.types import *
import pandas as pd
import numpy as np
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
spark = SparkSession.builder.appName("NewEnergyCarAnalysis").config("spark.sql.adaptive.enabled", "true").getOrCreate()
@csrf_exempt
def car_data_analysis(request):
if request.method == 'POST':
data = json.loads(request.body)
analysis_type = data.get('analysis_type')
time_range = data.get('time_range', 30)
car_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_info").option("user", "root").option("password", "password").load()
comment_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_comment").option("user", "root").option("password", "password").load()
config_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_config").option("user", "root").option("password", "password").load()
if analysis_type == 'brand_analysis':
brand_stats = car_df.groupBy("brand").agg(count("*").alias("car_count"), avg("price").alias("avg_price"), max("range_km").alias("max_range")).orderBy(desc("car_count"))
brand_comment_stats = car_df.join(comment_df, "car_id").groupBy("brand").agg(avg("rating").alias("avg_rating"), count("comment_id").alias("comment_count"))
result_df = brand_stats.join(brand_comment_stats, "brand", "left")
result_data = result_df.collect()
analysis_result = []
for row in result_data:
analysis_result.append({
'brand': row.brand,
'car_count': row.car_count,
'avg_price': float(row.avg_price) if row.avg_price else 0,
'max_range': row.max_range,
'avg_rating': float(row.avg_rating) if row.avg_rating else 0,
'comment_count': row.comment_count if row.comment_count else 0
})
elif analysis_type == 'price_range_analysis':
price_ranges = [(0, 150000, '15万以下'), (150000, 300000, '15-30万'), (300000, 500000, '30-50万'), (500000, float('inf'), '50万以上')]
price_analysis = []
for min_price, max_price, range_name in price_ranges:
if max_price == float('inf'):
filtered_df = car_df.filter(col("price") >= min_price)
else:
filtered_df = car_df.filter((col("price") >= min_price) & (col("price") < max_price))
car_count = filtered_df.count()
avg_range = filtered_df.select(avg("range_km")).collect()[0][0]
avg_rating = filtered_df.join(comment_df, "car_id").select(avg("rating")).collect()[0][0]
price_analysis.append({
'price_range': range_name,
'car_count': car_count,
'avg_range': float(avg_range) if avg_range else 0,
'avg_rating': float(avg_rating) if avg_rating else 0
})
analysis_result = price_analysis
return JsonResponse({'status': 'success', 'data': analysis_result})
return JsonResponse({'status': 'error', 'message': '请求方法错误'})
@csrf_exempt
def user_behavior_analysis(request):
if request.method == 'POST':
data = json.loads(request.body)
user_id = data.get('user_id')
analysis_period = data.get('period', 'month')
user_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "user").option("user", "root").option("password", "password").load()
comment_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_comment").option("user", "root").option("password", "password").load()
interaction_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "user_interaction").option("user", "root").option("password", "password").load()
if user_id:
user_comments = comment_df.filter(col("user_id") == user_id)
user_interactions = interaction_df.filter(col("user_id") == user_id)
comment_stats = user_comments.agg(count("*").alias("total_comments"), avg("rating").alias("avg_rating")).collect()[0]
interaction_stats = user_interactions.groupBy("interaction_type").count().collect()
user_preference = user_comments.join(spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_info").option("user", "root").option("password", "password").load(), "car_id").groupBy("brand").agg(count("*").alias("comment_count"), avg("rating").alias("brand_rating")).orderBy(desc("comment_count"))
preference_data = user_preference.collect()
behavior_analysis = {
'total_comments': comment_stats.total_comments,
'avg_rating': float(comment_stats.avg_rating) if comment_stats.avg_rating else 0,
'interaction_types': [{'type': row.interaction_type, 'count': row.count} for row in interaction_stats],
'brand_preferences': [{'brand': row.brand, 'comment_count': row.comment_count, 'rating': float(row.brand_rating)} for row in preference_data[:5]]
}
else:
overall_user_stats = user_df.count()
active_users = comment_df.filter(col("create_time") >= date_sub(current_date(), 30)).select("user_id").distinct().count()
popular_cars = comment_df.groupBy("car_id").agg(count("*").alias("comment_count"), avg("rating").alias("avg_rating")).orderBy(desc("comment_count"))
popular_data = popular_cars.join(spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_info").option("user", "root").option("password", "password").load(), "car_id").select("car_name", "comment_count", "avg_rating").collect()
behavior_analysis = {
'total_users': overall_user_stats,
'active_users': active_users,
'popular_cars': [{'car_name': row.car_name, 'comment_count': row.comment_count, 'avg_rating': float(row.avg_rating)} for row in popular_data[:10]]
}
return JsonResponse({'status': 'success', 'data': behavior_analysis})
return JsonResponse({'status': 'error', 'message': '请求方法错误'})
@csrf_exempt
def car_config_comparison(request):
if request.method == 'POST':
data = json.loads(request.body)
car_ids = data.get('car_ids', [])
comparison_type = data.get('comparison_type', 'basic')
if len(car_ids) < 2:
return JsonResponse({'status': 'error', 'message': '至少选择两款车型进行对比'})
car_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_info").option("user", "root").option("password", "password").load()
config_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_config").option("user", "root").option("password", "password").load()
comment_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/car_db").option("dbtable", "car_comment").option("user", "root").option("password", "password").load()
selected_cars = car_df.filter(col("car_id").isin(car_ids))
car_configs = selected_cars.join(config_df, "car_id", "left")
car_ratings = selected_cars.join(comment_df, "car_id", "left").groupBy("car_id", "car_name").agg(avg("rating").alias("avg_rating"), count("comment_id").alias("comment_count"))
comparison_data = car_configs.join(car_ratings, ["car_id", "car_name"], "left").collect()
performance_scores = []
for car in comparison_data:
range_score = min(car.range_km / 500.0, 1.0) * 100 if car.range_km else 0
price_score = max(0, (500000 - car.price) / 500000) * 100 if car.price else 0
rating_score = (car.avg_rating / 5.0) * 100 if car.avg_rating else 0
battery_score = min(car.battery_capacity / 100.0, 1.0) * 100 if hasattr(car, 'battery_capacity') and car.battery_capacity else 0
overall_score = (range_score * 0.3 + price_score * 0.2 + rating_score * 0.3 + battery_score * 0.2)
performance_scores.append({
'car_id': car.car_id,
'car_name': car.car_name,
'brand': car.brand,
'price': car.price,
'range_km': car.range_km,
'avg_rating': float(car.avg_rating) if car.avg_rating else 0,
'comment_count': car.comment_count if car.comment_count else 0,
'performance_score': round(overall_score, 2),
'range_score': round(range_score, 2),
'price_score': round(price_score, 2),
'rating_score': round(rating_score, 2)
})
performance_scores.sort(key=lambda x: x['performance_score'], reverse=True)
comparison_result = {
'cars': performance_scores,
'best_performer': performance_scores[0]['car_name'] if performance_scores else None,
'comparison_metrics': ['续航里程', '价格性价比', '用户评价', '综合性能']
}
return JsonResponse({'status': 'success', 'data': comparison_result})
return JsonResponse({'status': 'error', 'message': '请求方法错误'})
新能源汽车数据分析系统文档展示
💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐