💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
基于大数据的手机定价数据可视化分析系统介绍
《基于大数据的手机定价数据可视化分析系统》是一个综合运用Hadoop+Spark大数据框架构建的智能数据分析平台,系统采用Python作为主要开发语言,后端基于Django框架搭建,前端运用Vue+ElementUI+Echarts技术栈实现交互式数据可视化界面,通过MySQL数据库存储海量手机产品数据,并利用HDFS分布式文件系统和Spark SQL进行大规模数据处理与分析。系统涵盖了手机市场的全维度数据分析功能,包括摄像头模块的前置后置像素分布分析、摄像头配置组合模式及其与价格的关联关系研究,网络功能统计与基础功能配置的深度挖掘,内存配置组合、物理特征和硬件配置的综合汇总分析,以及综合性能评分、性价比分析、配置均衡性和性能对比的多维度评估体系。同时,系统还提供价格区间分布可视化、价格与内存处理器电池等核心硬件的关联分析,屏幕尺寸分辨率分布统计、像素密度深度分析和屏幕配置价格关系研究等专业功能模块。整个系统通过大屏可视化展示,运用Echarts图表库将复杂的数据分析结果以直观的图表形式呈现,结合Pandas和NumPy进行数据清洗与数值计算,为用户提供全面深入的手机定价市场洞察,帮助用户理解手机产品定价规律,发现市场趋势和产品性价比特征。
基于大数据的手机定价数据可视化分析系统演示视频
基于大数据的手机定价数据可视化分析系统演示图片
基于大数据的手机定价数据可视化分析系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, avg, count, max, min, when, desc, asc
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("PhonePricingAnalysis").config("spark.sql.adaptive.enabled", "true").getOrCreate()
def analyze_phone_pricing_data(request):
phone_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/phone_db").option("dbtable", "phone_data").option("user", "root").option("password", "password").load()
price_ranges = phone_df.select(when(col("price") < 1000, "低端机").when((col("price") >= 1000) & (col("price") < 3000), "中端机").when((col("price") >= 3000) & (col("price") < 5000), "高端机").otherwise("旗舰机").alias("price_range"), col("*"))
price_distribution = price_ranges.groupBy("price_range").agg(count("*").alias("count"), avg("price").alias("avg_price"), min("price").alias("min_price"), max("price").alias("max_price"))
memory_price_relation = phone_df.groupBy("memory_size").agg(avg("price").alias("avg_price"), count("*").alias("phone_count")).orderBy("memory_size")
processor_price_relation = phone_df.groupBy("processor_model").agg(avg("price").alias("avg_price"), count("*").alias("phone_count")).orderBy(desc("avg_price"))
battery_price_analysis = phone_df.groupBy("battery_capacity").agg(avg("price").alias("avg_price"), count("*").alias("phone_count")).orderBy("battery_capacity")
camera_config_analysis = phone_df.groupBy("rear_camera_pixels", "front_camera_pixels").agg(avg("price").alias("avg_price"), count("*").alias("phone_count")).orderBy(desc("avg_price"))
screen_size_distribution = phone_df.groupBy("screen_size").agg(count("*").alias("count"), avg("price").alias("avg_price")).orderBy("screen_size")
network_function_stats = phone_df.groupBy("network_type", "wifi_support", "bluetooth_version").agg(count("*").alias("count"), avg("price").alias("avg_price"))
price_dist_result = price_distribution.collect()
memory_relation_result = memory_price_relation.collect()
processor_relation_result = processor_price_relation.collect()
battery_analysis_result = battery_price_analysis.collect()
camera_analysis_result = camera_config_analysis.collect()
screen_dist_result = screen_size_distribution.collect()
network_stats_result = network_function_stats.collect()
result_data = {"price_distribution": [row.asDict() for row in price_dist_result], "memory_price_relation": [row.asDict() for row in memory_relation_result], "processor_price_relation": [row.asDict() for row in processor_relation_result], "battery_price_analysis": [row.asDict() for row in battery_analysis_result], "camera_config_analysis": [row.asDict() for row in camera_analysis_result], "screen_size_distribution": [row.asDict() for row in screen_dist_result], "network_function_stats": [row.asDict() for row in network_stats_result]}
return JsonResponse(result_data, safe=False)
def calculate_cost_performance_analysis(request):
phone_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/phone_db").option("dbtable", "phone_data").option("user", "root").option("password", "password").load()
performance_score = phone_df.withColumn("cpu_score", when(col("processor_model").contains("骁龙8"), 95).when(col("processor_model").contains("骁龙7"), 85).when(col("processor_model").contains("天玑9"), 92).when(col("processor_model").contains("麒麟9"), 90).otherwise(70))
memory_score = performance_score.withColumn("memory_score", when(col("memory_size") >= 12, 95).when(col("memory_size") >= 8, 85).when(col("memory_size") >= 6, 75).otherwise(60))
camera_score = memory_score.withColumn("camera_score", when(col("rear_camera_pixels") >= 108, 95).when(col("rear_camera_pixels") >= 64, 85).when(col("rear_camera_pixels") >= 48, 75).otherwise(65))
battery_score = camera_score.withColumn("battery_score", when(col("battery_capacity") >= 5000, 95).when(col("battery_capacity") >= 4000, 85).when(col("battery_capacity") >= 3000, 75).otherwise(60))
screen_score = battery_score.withColumn("screen_score", when((col("screen_resolution").contains("2K")) | (col("screen_resolution").contains("4K")), 95).when(col("screen_resolution").contains("1080P"), 85).otherwise(70))
total_performance = screen_score.withColumn("total_performance", (col("cpu_score") * 0.3 + col("memory_score") * 0.2 + col("camera_score") * 0.2 + col("battery_score") * 0.15 + col("screen_score") * 0.15))
cost_performance = total_performance.withColumn("cost_performance_ratio", col("total_performance") / col("price") * 1000)
cost_performance_ranking = cost_performance.select("brand", "model", "price", "total_performance", "cost_performance_ratio").orderBy(desc("cost_performance_ratio"))
price_range_performance = cost_performance.select(when(col("price") < 1500, "千元机").when((col("price") >= 1500) & (col("price") < 3000), "中端机").when((col("price") >= 3000) & (col("price") < 5000), "高端机").otherwise("旗舰机").alias("price_category"), col("cost_performance_ratio"), col("total_performance"), col("price"))
category_performance = price_range_performance.groupBy("price_category").agg(avg("cost_performance_ratio").alias("avg_cost_performance"), avg("total_performance").alias("avg_performance"), avg("price").alias("avg_price"), count("*").alias("phone_count"))
balance_analysis = cost_performance.withColumn("config_balance", when((col("cpu_score") - col("total_performance")).between(-10, 10) & (col("memory_score") - col("total_performance")).between(-10, 10) & (col("camera_score") - col("total_performance")).between(-10, 10), "均衡").when((col("cpu_score") > col("total_performance") + 15), "性能偏向").when((col("camera_score") > col("total_performance") + 15), "拍照偏向").otherwise("其他偏向"))
ranking_result = cost_performance_ranking.limit(50).collect()
category_result = category_performance.collect()
balance_result = balance_analysis.groupBy("config_balance").agg(count("*").alias("count"), avg("cost_performance_ratio").alias("avg_ratio")).collect()
analysis_data = {"cost_performance_ranking": [row.asDict() for row in ranking_result], "category_performance": [row.asDict() for row in category_result], "balance_analysis": [row.asDict() for row in balance_result]}
return JsonResponse(analysis_data, safe=False)
def generate_visualization_data(request):
phone_df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/phone_db").option("dbtable", "phone_data").option("user", "root").option("password", "password").load()
brand_distribution = phone_df.groupBy("brand").agg(count("*").alias("count"), avg("price").alias("avg_price")).orderBy(desc("count"))
price_histogram_data = phone_df.select("price").rdd.map(lambda row: row.price).histogram(20)
price_bins = price_histogram_data[0]
price_counts = price_histogram_data[1]
memory_vs_price = phone_df.select("memory_size", "price").collect()
camera_scatter_data = phone_df.select("rear_camera_pixels", "front_camera_pixels", "price", "brand").collect()
performance_radar_data = phone_df.select("brand", "model", "price", when(col("processor_model").contains("骁龙8"), 95).otherwise(75).alias("cpu_performance"), when(col("memory_size") >= 8, 90).otherwise(70).alias("memory_performance"), when(col("rear_camera_pixels") >= 64, 90).otherwise(70).alias("camera_performance"), when(col("battery_capacity") >= 4000, 90).otherwise(70).alias("battery_performance"), when(col("screen_size") >= 6.5, 85).otherwise(75).alias("screen_performance")).limit(10).collect()
screen_resolution_pie = phone_df.groupBy("screen_resolution").agg(count("*").alias("count")).collect()
network_type_bar = phone_df.groupBy("network_type").agg(count("*").alias("count"), avg("price").alias("avg_price")).collect()
monthly_trend_data = phone_df.groupBy("release_month").agg(count("*").alias("release_count"), avg("price").alias("avg_price")).orderBy("release_month").collect()
price_range_funnel = phone_df.select(when(col("price") < 1000, "1000以下").when(col("price") < 2000, "1000-2000").when(col("price") < 3000, "2000-3000").when(col("price") < 4000, "3000-4000").when(col("price") < 5000, "4000-5000").otherwise("5000以上").alias("price_range")).groupBy("price_range").agg(count("*").alias("count")).collect()
feature_correlation_matrix = phone_df.select("price", "memory_size", "battery_capacity", "rear_camera_pixels", "screen_size").toPandas()
correlation_matrix = feature_correlation_matrix.corr().to_dict()
brand_market_share = phone_df.groupBy("brand").agg(count("*").alias("count")).withColumn("market_share", col("count") / phone_df.count() * 100).collect()
visualization_result = {"brand_distribution": [row.asDict() for row in brand_distribution.collect()], "price_histogram": {"bins": price_bins[:-1], "counts": price_counts}, "memory_vs_price": [{"memory": row.memory_size, "price": row.price} for row in memory_vs_price], "camera_scatter": [{"rear_camera": row.rear_camera_pixels, "front_camera": row.front_camera_pixels, "price": row.price, "brand": row.brand} for row in camera_scatter_data], "performance_radar": [row.asDict() for row in performance_radar_data], "screen_resolution_pie": [row.asDict() for row in screen_resolution_pie], "network_type_bar": [row.asDict() for row in network_type_bar], "monthly_trend": [row.asDict() for row in monthly_trend_data], "price_range_funnel": [row.asDict() for row in price_range_funnel], "correlation_matrix": correlation_matrix, "market_share": [row.asDict() for row in brand_market_share]}
return JsonResponse(visualization_result, safe=False)
基于大数据的手机定价数据可视化分析系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目