- 导入必要的库
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
- 创建SparkSession
conf = SparkConf().setAppName("Medical Industry Data Analysis")
sc = SparkContext(conf=conf)
spark = SparkSession(sc)
- 读取数据
# 读取医院信息数据
hospital = spark.read.format("csv").option("header", "true").load("hospital_info.csv")
# 读取医生信息数据
doctor = spark.read.format("csv").option("header", "true").load("doctor_info.csv")
# 读取患者信息数据
patient = spark.read.format("csv").option("header", "true").load("patient_info.csv")
- 数据清洗和预处理
# 将医院信息数据进行清洗和预处理
hospital = hospital.dropDuplicates() # 去重
hospital = hospital.dropna() # 去除缺失值
# 将医生信息数据进行清洗和预处理
doctor = doctor.dropDuplicates() # 去重
doctor = doctor.dropna() # 去除缺失值
# 将患者信息数据进行清洗和预处理
patient = patient.dropDuplicates() # 去重
patient = patient.dropna() # 去除缺失值
- 数据合并
# 合并医院信息数据、医生信息数据和患者信息数据
medical_info = hospital.join(doctor, on="hospital_id").join(patient, on="doctor_id")
- 数据聚合和分析
# 使用Spark SQL进行数据聚合和分析
medical_info.createOrReplaceTempView("medical_info")
result = spark.sql("""
SELECT
hospital_name,
AVG(age) AS avg_age,
COUNT(DISTINCT patient_id) AS patient_count,
COUNT(DISTINCT doctor_id) AS doctor_count
FROM medical_info
GROUP BY hospital_name
ORDER BY avg_age DESC
""")
# 显示结果
result.show()
我们使用了Spark SQL实现医疗行业数据分析,具体实现过程如下:
- 首先,读取需要进行数据分析的数据,如医院信息数据、医生信息数据和患者信息数据等。
- 接着,对读取的数据进行清洗和预处理,如去重、去除缺失值等。
- 然后,使用join操作将不同的数据表进行合并,得到包含多个表的数据集。
- 最后,使用Spark SQL进行数据聚合和分析,得到需要的结果,如对医院的平均患者年龄、患者人数和医生人数进行统计分析。