💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜
💕💕文末获取源码
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-选题背景
随着全球经济一体化进程加速,世界五百强企业作为全球经济的风向标,其经营状况和发展趋势备受关注。据《财富》杂志发布的2022年世界500强排行榜显示,上榜企业总营收达37.8万亿美元,净利润高达3.1万亿美元,员工总数超过7000万人,这些数据背后蕴含着丰富的经济信息和市场规律。然而,面对如此庞大而复杂的数据集合,传统分析方法已难以满足深度挖掘和全面把握的需求。大数据技术的兴起为解决这一难题提供了可能,Hadoop和Spark等分布式计算框架能够高效处理TB甚至PB级别的数据。麦肯锡全球研究院报告指出,大数据分析可为零售业带来60%的利润增长,为制造业提升50%的生产效率。在这样的背景下,开发基于大数据的世界五百强企业数据分析与可视化系统,对于揭示全球经济发展规律、把握产业变革趋势具有重要价值。 开发这样一个系统具有多方面的现实意义。对学术研究而言,该系统能够提供全球大型企业发展的数据支撑,帮助研究人员发现企业规模、行业特性与经营绩效之间的内在联系,推动经济学和管理学理论创新。对企业决策者来说,通过系统提供的行业对比、区域分析和成功因素提取等功能,可以明确自身在全球市场中的位置,找准发展方向和竞争策略,提升国际竞争力。对政府部门而言,系统呈现的各国企业分布和行业结构差异,有助于制定更有针对性的产业政策和国际贸易策略,优化资源配置。我们这个系统采用Hadoop和Spark构建的大数据处理平台,结合Python数据分析工具和Vue可视化技术,不仅能够高效处理海量企业数据,还能通过直观的图表展示复杂的数据关系,让用户无需专业背景就能获取有价值的信息,真正实现数据的民主化和价值最大化。
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-功能介绍
基于大数据的世界五百强企业数据分析与可视化系统是一个综合性数据处理平台,主要利用Hadoop和Spark大数据框架进行数据预处理与数据分析,再结合Python+Django后端框架实现数据可视化功能。系统核心技术栈包括HDFS分布式存储、Spark计算引擎、Spark SQL数据查询,以及Pandas和NumPy等数据分析库,前端采用Vue+ElementUI+Echarts实现直观的数据可视化展示。该系统功能丰富,涵盖四大模块:企业地理分布与经济影响分析模块可展示各国家/地区500强企业数量分布、总收入与利润贡献、各大洲企业表现对比以及中美企业行业分布差异;行业结构与绩效分析模块提供全球500强企业行业分布、行业平均利润率比较、人均创收与利润分析、高科技与传统行业对比等功能;企业规模与效益关系分析模块探究企业规模与利润关系、收入分布特征、排名区间财务特征对比及效率指标排名;特殊企业群体分析模块则聚焦亏损企业特征、高利润率企业成功因素、中国企业国际竞争力、互联网企业表现及新兴市场与发达国家企业对比。系统通过MySQL数据库存储处理后的结构化数据,为用户提供全方位、多维度的世界500强企业数据分析视角,帮助决策者把握全球经济发展趋势和企业竞争格局。
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-技术选型
大数据框架:Hadoop+Spark(本次没用Hive,支持定制) 开发语言:Python+Java(两个版本都支持) 后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持) 前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery 详细技术点:Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy 数据库:MySQL
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-视频展示
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-视频
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-图片展示
大屏_上
大屏_下
注册
登录
用户首页
地理分布分析
企业规模分析
特殊群体分析
行业分布分析
管理员_五百强企业信息管理
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-代码展示
import pandas as pd
import numpy as np
import findspark
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, sum, round as spark_round, desc, when, lit
from pyspark.sql.types import DoubleType
import matplotlib.pyplot as plt
import seaborn as sns
import os
def analyze_country_distribution():
# 初始化Spark
findspark.init()
spark = SparkSession.builder.appName("Fortune500_Country_Analysis").getOrCreate()
# 读取预处理后的数据
df = spark.read.csv("hdfs://127.0.0.1:9000/Fortune500Analysis/output/preprocessed_data", header=True, inferSchema=True)
# 计算各国家的500强企业数量
country_count = df.groupBy("country").agg(
count("*").alias("company_count"),
spark_round(sum("revenue"), 2).alias("total_revenue"),
spark_round(sum("profit"), 2).alias("total_profit")
).orderBy(desc("company_count"))
# 计算各国家占比
total_companies = df.count()
country_count = country_count.withColumn(
"percentage",
spark_round((col("company_count") / lit(total_companies)) * 100, 2)
)
# 计算各国家的平均利润率
country_profitability = df.groupBy("country").agg(
spark_round(sum("profit") / sum("revenue") * 100, 2).alias("country_profit_margin"),
spark_round(sum("profit") / count("*"), 2).alias("avg_profit_per_company")
)
# 合并结果
result = country_count.join(country_profitability, "country")
# 识别主要经济体 (拥有10家以上500强企业的国家)
major_economies = result.filter(col("company_count") >= 10)
# 计算GDP影响力指数 (自定义指标: 总收入与该国企业数量的比值)
result = result.withColumn(
"economic_impact_index",
spark_round(col("total_revenue") / col("company_count"), 2)
)
# 分析中美欧三大经济体的对比
us_data = result.filter(col("country") == "美国").collect()
china_data = result.filter(col("country") == "中国").collect()
europe_data = result.filter(col("country").isin(
["德国", "法国", "英国", "意大利", "西班牙", "荷兰", "瑞士", "瑞典"]
)).agg(
sum("company_count").alias("company_count"),
sum("total_revenue").alias("total_revenue"),
sum("total_profit").alias("total_profit"),
spark_round(sum("total_profit") / sum("total_revenue") * 100, 2).alias("country_profit_margin")
).collect()
# 计算全球经济影响力排名 (基于总收入)
global_influence = result.select(
"country", "company_count", "total_revenue", "total_profit", "country_profit_margin"
).orderBy(desc("total_revenue")).limit(20)
# 分析地理区域集中度
# 添加区域分类
region_mapping = {
"北美": ["美国", "加拿大", "墨西哥"],
"欧洲": ["德国", "法国", "英国", "意大利", "西班牙", "荷兰", "瑞士", "瑞典", "比利时", "爱尔兰", "卢森堡", "俄罗斯", "挪威", "芬兰", "丹麦"],
"亚太": ["中国", "日本", "韩国", "印度", "澳大利亚", "新加坡", "马来西亚", "泰国", "台湾", "香港"],
"其他": ["巴西", "沙特阿拉伯"]
}
# 创建区域映射字典
country_to_region = {}
for region, countries in region_mapping.items():
for country in countries:
country_to_region[country] = region
# 注册UDF以映射国家到区域
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType
def map_country_to_region(country):
return country_to_region.get(country, "其他")
region_udf = udf(map_country_to_region, StringType())
# 添加区域列并按区域分组
df_with_region = df.withColumn("region", region_udf(col("country")))
region_analysis = df_with_region.groupBy("region").agg(
count("*").alias("company_count"),
spark_round(sum("revenue"), 2).alias("total_revenue"),
spark_round(sum("profit"), 2).alias("total_profit")
).orderBy(desc("company_count"))
# 计算区域占比
region_analysis = region_analysis.withColumn(
"percentage",
spark_round((col("company_count") / lit(total_companies)) * 100, 2)
).withColumn(
"profit_margin",
spark_round(col("total_profit") / col("total_revenue") * 100, 2)
)
# 保存结果到HDFS和本地
output_dir = "output/country_analysis"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 保存国家分析结果
result.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/country_analysis/country_distribution",
header=True
)
result.toPandas().to_csv(f"{output_dir}/country_distribution.csv", index=False)
# 保存区域分析结果
region_analysis.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/country_analysis/region_distribution",
header=True
)
region_analysis.toPandas().to_csv(f"{output_dir}/region_distribution.csv", index=False)
# 保存全球影响力排名
global_influence.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/country_analysis/global_influence",
header=True
)
global_influence.toPandas().to_csv(f"{output_dir}/global_influence.csv", index=False)
return result, region_analysis, global_influence
# 功能2: 行业结构与绩效分析
def analyze_industry_performance():
# 初始化Spark
findspark.init()
spark = SparkSession.builder.appName("Fortune500_Industry_Analysis").getOrCreate()
# 读取预处理后的数据
df = spark.read.csv("hdfs://127.0.0.1:9000/Fortune500Analysis/output/preprocessed_data", header=True, inferSchema=True)
# 分析行业分布
industry_distribution = df.groupBy("industry_category").agg(
count("*").alias("company_count"),
spark_round(sum("revenue"), 2).alias("total_revenue"),
spark_round(sum("profit"), 2).alias("total_profit")
).orderBy(desc("company_count"))
# 计算行业占比
total_companies = df.count()
industry_distribution = industry_distribution.withColumn(
"percentage",
spark_round((col("company_count") / lit(total_companies)) * 100, 2)
)
# 计算行业平均利润率
industry_profitability = df.groupBy("industry_category").agg(
spark_round(sum("profit") / sum("revenue") * 100, 2).alias("profit_margin"),
spark_round(sum("profit") / count("*"), 2).alias("avg_profit_per_company")
).orderBy(desc("profit_margin"))
# 计算行业人均创收与人均利润
industry_efficiency = df.filter(col("employees") > 0).groupBy("industry_category").agg(
spark_round(sum("revenue") / sum("employees"), 2).alias("revenue_per_employee"),
spark_round(sum("profit") / sum("employees"), 2).alias("profit_per_employee"),
sum("employees").alias("total_employees"),
spark_round(sum("revenue") / sum("employees") * 1000, 2).alias("revenue_per_1000_employees"),
spark_round(sum("profit") / sum("employees") * 1000, 2).alias("profit_per_1000_employees")
).orderBy(desc("revenue_per_employee"))
# 合并行业分析结果
industry_analysis = industry_distribution.join(industry_profitability, "industry_category")
industry_analysis = industry_analysis.join(industry_efficiency, "industry_category")
# 高科技行业与传统行业对比
high_tech_industries = ["信息技术", "医疗健康", "电信"]
traditional_industries = ["制造业", "能源", "零售", "批发", "物流"]
# 创建高科技与传统行业标识
tech_traditional_df = df.withColumn(
"industry_type",
when(col("industry_category").isin(high_tech_industries), "高科技行业")
.when(col("industry_category").isin(traditional_industries), "传统行业")
.otherwise("其他行业")
)
# 分析高科技与传统行业的财务表现
tech_vs_traditional = tech_traditional_df.groupBy("industry_type").agg(
count("*").alias("company_count"),
spark_round(sum("revenue"), 2).alias("total_revenue"),
spark_round(sum("profit"), 2).alias("total_profit"),
spark_round(sum("profit") / sum("revenue") * 100, 2).alias("profit_margin"),
spark_round(sum("revenue") / sum("employees"), 2).alias("revenue_per_employee"),
spark_round(sum("profit") / sum("employees"), 2).alias("profit_per_employee")
).orderBy("industry_type")
# 能源行业区域分布与绩效差异
energy_industry = df.filter(col("industry_category") == "能源")
# 按国家分析能源企业
energy_by_country = energy_industry.groupBy("country").agg(
count("*").alias("company_count"),
spark_round(sum("revenue"), 2).alias("total_revenue"),
spark_round(sum("profit"), 2).alias("total_profit"),
spark_round(sum("profit") / sum("revenue") * 100, 2).alias("profit_margin")
).filter(col("company_count") >= 2).orderBy(desc("company_count"))
# 按大洲分析能源企业
energy_by_continent = energy_industry.groupBy("continent").agg(
count("*").alias("company_count"),
spark_round(sum("revenue"), 2).alias("total_revenue"),
spark_round(sum("profit"), 2).alias("total_profit"),
spark_round(sum("profit") / sum("revenue") * 100, 2).alias("profit_margin")
).orderBy(desc("company_count"))
# 行业集中度分析 (计算前5大行业的总收入占比)
total_revenue = df.agg(sum("revenue").alias("total_revenue")).collect()[0]["total_revenue"]
top_industries = industry_distribution.orderBy(desc("total_revenue")).limit(5)
top_industries_revenue = sum([row["total_revenue"] for row in top_industries.collect()])
concentration_ratio = top_industries_revenue / total_revenue
# 保存结果到HDFS和本地
output_dir = "output/industry_analysis"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 保存行业分析结果
industry_analysis.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/industry_analysis/industry_performance",
header=True
)
industry_analysis.toPandas().to_csv(f"{output_dir}/industry_performance.csv", index=False)
# 保存高科技与传统行业对比
tech_vs_traditional.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/industry_analysis/tech_vs_traditional",
header=True
)
tech_vs_traditional.toPandas().to_csv(f"{output_dir}/tech_vs_traditional.csv", index=False)
# 保存能源行业分析
energy_by_country.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/industry_analysis/energy_by_country",
header=True
)
energy_by_country.toPandas().to_csv(f"{output_dir}/energy_by_country.csv", index=False)
energy_by_continent.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/industry_analysis/energy_by_continent",
header=True
)
energy_by_continent.toPandas().to_csv(f"{output_dir}/energy_by_continent.csv", index=False)
# 创建行业集中度报告
concentration_data = [("前5大行业集中度", float(concentration_ratio))]
concentration_df = spark.createDataFrame(concentration_data, ["metric", "value"])
concentration_df.write.mode("overwrite").csv(
"hdfs://127.0.0.1:9000/Fortune500Analysis/output/industry_analysis/industry_concentration",
header=True
)
pd.DataFrame(concentration_data, columns=["metric", "value"]).to_csv(
f"{output_dir}/industry_concentration.csv", index=False
)
return industry_analysis, tech_vs_traditional, energy_by_country
基于Hadoop+Spark的世界五百强企业数据分析与可视化系统-结语
💕💕
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。