💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
基于大数据的在线教育投融数据分析系统介绍
在线教育投融数据分析系统是一个基于大数据技术的综合性数据处理平台,采用Hadoop+Spark分布式计算框架作为核心技术架构,支持Python+Django和Java+SpringBoot双技术栈实现。系统整合了HDFS分布式文件存储、Spark SQL查询引擎、以及Pandas、NumPy等专业数据分析工具,构建了完整的在线教育投融资数据处理生态。前端采用Vue+ElementUI+Echarts技术栈,提供直观的数据可视化界面,支持融资阶段分布分析、投资机构行为分析、行业总体趋势分析等多维度数据挖掘功能。系统通过MySQL数据库存储结构化数据,结合大数据框架处理海量投融资信息,实现了从数据采集、清洗、分析到可视化展示的全流程自动化处理。整体架构设计遵循分层解耦原则,具备良好的扩展性和可维护性,能够高效处理在线教育领域的复杂投融资数据分析需求。
基于大数据的在线教育投融数据分析系统演示视频
基于大数据的在线教育投融数据分析系统演示图片
基于大数据的在线教育投融数据分析系统代码展示
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum as spark_sum, count, avg, desc, asc, when, collect_list
from pyspark.sql.types import StructType, StructField, StringType, DoubleType, IntegerType, DateType
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import mysql.connector
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
spark = SparkSession.builder.appName("OnlineEducationInvestmentAnalysis").config("spark.sql.adaptive.enabled", "true").config("spark.sql.adaptive.coalescePartitions.enabled", "true").getOrCreate()
@csrf_exempt
def analyze_funding_stage_distribution(request):
if request.method == 'POST':
data = json.loads(request.body)
date_range = data.get('date_range', {})
start_date = date_range.get('start_date', '2020-01-01')
end_date = date_range.get('end_date', '2024-12-31')
connection = mysql.connector.connect(host='localhost', database='education_investment', user='root', password='password')
query = f"SELECT funding_stage, funding_amount, company_name, investment_date, industry_sector FROM investment_records WHERE investment_date BETWEEN '{start_date}' AND '{end_date}'"
investment_df = pd.read_sql(query, connection)
connection.close()
spark_df = spark.createDataFrame(investment_df)
spark_df.createOrReplaceTempView("investment_data")
stage_distribution = spark.sql("SELECT funding_stage, COUNT(*) as deal_count, SUM(funding_amount) as total_amount, AVG(funding_amount) as avg_amount FROM investment_data GROUP BY funding_stage ORDER BY total_amount DESC")
stage_stats = stage_distribution.collect()
stage_trend = spark.sql("SELECT funding_stage, YEAR(investment_date) as year, COUNT(*) as yearly_count, SUM(funding_amount) as yearly_amount FROM investment_data GROUP BY funding_stage, YEAR(investment_date) ORDER BY year, yearly_amount DESC")
trend_data = stage_trend.collect()
sector_stage_analysis = spark.sql("SELECT industry_sector, funding_stage, COUNT(*) as sector_stage_count, AVG(funding_amount) as sector_avg_amount FROM investment_data GROUP BY industry_sector, funding_stage")
sector_analysis = sector_stage_analysis.collect()
result_data = {'stage_distribution': [{'stage': row.funding_stage, 'deal_count': row.deal_count, 'total_amount': float(row.total_amount), 'avg_amount': float(row.avg_amount)} for row in stage_stats], 'trend_analysis': [{'stage': row.funding_stage, 'year': row.year, 'count': row.yearly_count, 'amount': float(row.yearly_amount)} for row in trend_data], 'sector_stage_analysis': [{'sector': row.industry_sector, 'stage': row.funding_stage, 'count': row.sector_stage_count, 'avg_amount': float(row.sector_avg_amount)} for row in sector_analysis]}
return JsonResponse({'status': 'success', 'data': result_data})
return JsonResponse({'status': 'error', 'message': 'Invalid request method'})
@csrf_exempt
def analyze_investor_behavior(request):
if request.method == 'POST':
data = json.loads(request.body)
analysis_type = data.get('analysis_type', 'comprehensive')
time_window = data.get('time_window', 365)
connection = mysql.connector.connect(host='localhost', database='education_investment', user='root', password='password')
end_date = datetime.now()
start_date = end_date - timedelta(days=time_window)
query = f"SELECT investor_name, company_name, funding_amount, funding_stage, investment_date, industry_sector, investment_round FROM investor_activities WHERE investment_date BETWEEN '{start_date.strftime('%Y-%m-%d')}' AND '{end_date.strftime('%Y-%m-%d')}'"
investor_df = pd.read_sql(query, connection)
connection.close()
if len(investor_df) == 0:
return JsonResponse({'status': 'error', 'message': 'No data found for specified time window'})
spark_df = spark.createDataFrame(investor_df)
spark_df.createOrReplaceTempView("investor_data")
investor_activity = spark.sql("SELECT investor_name, COUNT(*) as investment_count, SUM(funding_amount) as total_investment, AVG(funding_amount) as avg_investment, COUNT(DISTINCT industry_sector) as sector_diversity FROM investor_data GROUP BY investor_name ORDER BY total_investment DESC")
activity_results = investor_activity.collect()
stage_preference = spark.sql("SELECT investor_name, funding_stage, COUNT(*) as stage_count, SUM(funding_amount) as stage_amount FROM investor_data GROUP BY investor_name, funding_stage")
preference_results = stage_preference.collect()
sector_focus = spark.sql("SELECT investor_name, industry_sector, COUNT(*) as sector_investments, SUM(funding_amount) as sector_amount, AVG(funding_amount) as sector_avg FROM investor_data GROUP BY investor_name, industry_sector")
sector_results = sector_focus.collect()
co_investment_analysis = spark.sql("SELECT i1.investor_name as investor1, i2.investor_name as investor2, COUNT(*) as co_investment_count, SUM(i1.funding_amount) as co_investment_amount FROM investor_data i1 JOIN investor_data i2 ON i1.company_name = i2.company_name AND i1.investment_date = i2.investment_date AND i1.investor_name < i2.investor_name GROUP BY i1.investor_name, i2.investor_name HAVING co_investment_count >= 2 ORDER BY co_investment_count DESC")
co_investment_results = co_investment_analysis.collect()
behavioral_metrics = []
for row in activity_results:
investor_name = row.investor_name
investor_stages = [r for r in preference_results if r.investor_name == investor_name]
investor_sectors = [r for r in sector_results if r.investor_name == investor_name]
stage_concentration = max([s.stage_count for s in investor_stages]) / sum([s.stage_count for s in investor_stages]) if investor_stages else 0
sector_concentration = max([s.sector_investments for s in investor_sectors]) / sum([s.sector_investments for s in investor_sectors]) if investor_sectors else 0
behavioral_metrics.append({'investor': investor_name, 'total_investments': row.investment_count, 'total_amount': float(row.total_investment), 'avg_investment': float(row.avg_investment), 'sector_diversity': row.sector_diversity, 'stage_concentration': round(stage_concentration, 3), 'sector_concentration': round(sector_concentration, 3)})
result_data = {'investor_behavior': behavioral_metrics, 'stage_preferences': [{'investor': row.investor_name, 'stage': row.funding_stage, 'count': row.stage_count, 'amount': float(row.stage_amount)} for row in preference_results], 'sector_focus': [{'investor': row.investor_name, 'sector': row.industry_sector, 'investments': row.sector_investments, 'amount': float(row.sector_amount), 'avg_amount': float(row.sector_avg)} for row in sector_results], 'co_investments': [{'investor1': row.investor1, 'investor2': row.investor2, 'count': row.co_investment_count, 'amount': float(row.co_investment_amount)} for row in co_investment_results]}
return JsonResponse({'status': 'success', 'data': result_data})
return JsonResponse({'status': 'error', 'message': 'Invalid request method'})
@csrf_exempt
def analyze_industry_trends(request):
if request.method == 'POST':
data = json.loads(request.body)
trend_period = data.get('trend_period', 'quarterly')
analysis_depth = data.get('analysis_depth', 'detailed')
connection = mysql.connector.connect(host='localhost', database='education_investment', user='root', password='password')
query = "SELECT company_name, funding_amount, funding_stage, investment_date, industry_sector, company_valuation, employee_count, founded_year FROM investment_records ORDER BY investment_date"
trend_df = pd.read_sql(query, connection)
connection.close()
spark_df = spark.createDataFrame(trend_df)
spark_df.createOrReplaceTempView("trend_data")
if trend_period == 'quarterly':
time_trend = spark.sql("SELECT YEAR(investment_date) as year, QUARTER(investment_date) as quarter, COUNT(*) as deal_count, SUM(funding_amount) as total_funding, AVG(funding_amount) as avg_funding, COUNT(DISTINCT industry_sector) as sector_count FROM trend_data GROUP BY YEAR(investment_date), QUARTER(investment_date) ORDER BY year, quarter")
elif trend_period == 'monthly':
time_trend = spark.sql("SELECT YEAR(investment_date) as year, MONTH(investment_date) as month, COUNT(*) as deal_count, SUM(funding_amount) as total_funding, AVG(funding_amount) as avg_funding FROM trend_data GROUP BY YEAR(investment_date), MONTH(investment_date) ORDER BY year, month")
else:
time_trend = spark.sql("SELECT YEAR(investment_date) as year, COUNT(*) as deal_count, SUM(funding_amount) as total_funding, AVG(funding_amount) as avg_funding FROM trend_data GROUP BY YEAR(investment_date) ORDER BY year")
trend_results = time_trend.collect()
sector_evolution = spark.sql("SELECT industry_sector, YEAR(investment_date) as year, COUNT(*) as yearly_deals, SUM(funding_amount) as yearly_funding, AVG(company_valuation) as avg_valuation FROM trend_data WHERE company_valuation IS NOT NULL GROUP BY industry_sector, YEAR(investment_date) ORDER BY industry_sector, year")
sector_results = sector_evolution.collect()
stage_evolution = spark.sql("SELECT funding_stage, YEAR(investment_date) as year, COUNT(*) as stage_deals, SUM(funding_amount) as stage_funding, AVG(funding_amount) as stage_avg_funding FROM trend_data GROUP BY funding_stage, YEAR(investment_date) ORDER BY year, stage_funding DESC")
stage_results = stage_evolution.collect()
market_maturity = spark.sql("SELECT industry_sector, AVG(YEAR(investment_date) - founded_year) as avg_company_age, COUNT(*) as total_companies, AVG(employee_count) as avg_employees, SUM(funding_amount) as sector_total_funding FROM trend_data WHERE founded_year IS NOT NULL AND employee_count IS NOT NULL GROUP BY industry_sector ORDER BY sector_total_funding DESC")
maturity_results = market_maturity.collect()
growth_rate_analysis = []
for sector in set([row.industry_sector for row in sector_results]):
sector_data = [row for row in sector_results if row.industry_sector == sector]
sector_data.sort(key=lambda x: x.year)
if len(sector_data) >= 2:
latest_funding = sector_data[-1].yearly_funding
previous_funding = sector_data[-2].yearly_funding
growth_rate = ((latest_funding - previous_funding) / previous_funding * 100) if previous_funding > 0 else 0
growth_rate_analysis.append({'sector': sector, 'growth_rate': round(growth_rate, 2), 'latest_year': sector_data[-1].year, 'latest_funding': float(latest_funding), 'deal_count': sector_data[-1].yearly_deals})
result_data = {'time_trends': [{'period': f"{row.year}-Q{row.quarter}" if hasattr(row, 'quarter') else (f"{row.year}-{row.month:02d}" if hasattr(row, 'month') else str(row.year)), 'deal_count': row.deal_count, 'total_funding': float(row.total_funding), 'avg_funding': float(row.avg_funding)} for row in trend_results], 'sector_evolution': [{'sector': row.industry_sector, 'year': row.year, 'deals': row.yearly_deals, 'funding': float(row.yearly_funding), 'avg_valuation': float(row.avg_valuation) if row.avg_valuation else 0} for row in sector_results], 'stage_trends': [{'stage': row.funding_stage, 'year': row.year, 'deals': row.stage_deals, 'funding': float(row.stage_funding), 'avg_funding': float(row.stage_avg_funding)} for row in stage_results], 'market_maturity': [{'sector': row.industry_sector, 'avg_age': float(row.avg_company_age), 'company_count': row.total_companies, 'avg_employees': float(row.avg_employees), 'total_funding': float(row.sector_total_funding)} for row in maturity_results], 'growth_analysis': growth_rate_analysis}
return JsonResponse({'status': 'success', 'data': result_data})
return JsonResponse({'status': 'error', 'message': 'Invalid request method'})
基于大数据的在线教育投融数据分析系统文档展示
💖💖作者:计算机毕业设计江挽 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目