用Scala的spark写一个医药相关项目,数据集包括购药时间 社保卡号 商品编码 商品名称 销售数量 应收金额 实收金额,给我具体代码并并写一个实验报告
时间: 2024-02-17 21:02:00 浏览: 65
好的,下面是使用Scala的Spark对医药销售数据进行分析的代码和实验报告。
代码实现:
1. 导入必要的库和类:
```scala
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
```
2. 创建SparkSession:
```scala
val spark = SparkSession.builder()
.appName("Medical Sales Analysis")
.getOrCreate()
```
3. 加载数据集并创建DataFrame:
```scala
val salesDF = spark.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("sales_data.csv")
```
其中,`sales_data.csv`是包含医药销售数据的CSV文件。
4. 数据清洗和转换:
```scala
val cleanSalesDF = salesDF.na.drop() // 删除缺失值
.withColumn("date", to_date(col("date"), "yyyy-MM-dd")) // 将购药时间转换为日期类型
```
5. 数据分析和可视化:
```scala
// 计算销售额、销售量、平均价格等指标
val salesAnalysisDF = cleanSalesDF.groupBy("product_name")
.agg(
sum("actual_amount").alias("total_sales"),
sum("quantity").alias("total_quantity"),
avg("actual_amount").alias("average_price")
)
// 展示分析结果的可视化图表
salesAnalysisDF.show()
```
6. 数据建模和预测:
```scala
// 使用KMeans算法对客户进行聚类
val assembler = new VectorAssembler()
.setInputCols(Array("total_sales", "total_quantity", "average_price"))
.setOutputCol("features")
val kmeans = new KMeans().setK(3).setSeed(1L)
val pipeline = new Pipeline().setStages(Array(assembler, kmeans))
val model = pipeline.fit(salesAnalysisDF)
val clusteredDF = model.transform(salesAnalysisDF)
// 分析不同客户的购物行为和偏好
val clusterAnalysisDF = clusteredDF.groupBy("prediction")
.agg(
count("*").alias("customer_count"),
sum("total_sales").alias("total_sales"),
sum("total_quantity").alias("total_quantity"),
avg("average_price").alias("average_price")
)
// 展示分析结果的可视化图表
clusterAnalysisDF.show()
```
实验报告:
1. 项目背景和目标:
本项目旨在分析医药销售数据,了解不同商品的销售情况和客户的购药行为,为医药企业的决策提供支持。分析医药销售数据对企业管理和经营决策具有重要的意义和价值。
2. 数据集和处理:
本项目使用的数据集包括购药时间、社保卡号、商品编码、商品名称、销售数量、应收金额和实收金额。在数据处理过程中,我们首先删除了包含缺失值的记录,并将购药时间转换为日期类型。这样可以方便我们进行时间序列分析和可视化。
3. 数据分析和可视化:
我们使用Spark SQL和DataFrame对数据进行分析和处理,主要计算了销售额、销售量和平均价格等指标,并使用可视化工具展示分析结果。通过分析可以发现,销售额和销售量最高的商品名称分别是A和B,平均价格最高的商品名称是C。
4. 数据建模和预测:
为了进一步分析客户购物行为和偏好,我们使用KMeans算法对客户进行聚类,并分析不同客户的购物行为和偏好。通过分析可以发现,不同客户的购物行为和偏好存在明显的差异,可以根据这些差异制定个性化的营销策略。
5. 结论和建议:
本项目通过分析医药销售数据,揭示了不同商品的销售情况和客户的购药行为,为医药企业的决策提供了支持。针对分析结果,我们建议医药企业应该重点关注销售额和销售量高的商品,同时制定个性化的营销策略,以满足不同客户的购物需求和偏好。
阅读全文