“泰迪杯”超市Spark数据处理和数据分析项目实战Dataframe

5 篇文章 2 订阅
4 篇文章 2 订阅


数据和代码

 

                                        2019 年“泰迪杯”数据分析职业技能大赛 
                                                        超市销售数据分析 
一、 背景 
近年来,随着新零售业的快速发展,消费者购买商品时有了更多的对比和
选择,导致超市行业的竞争日益激烈,利润空间不断压缩。超市的经营管理产
生了大量数据,对这些数据进行分析,可以提升超市的竞争力,为超市的运营
及经营策略调整提供重要依据。 
二、 目标 
1. 对销售数据进行统计分析,并作可视化展示。 
2. 分析顾客的消费行为。 
3. 研究促销对销售的影响。 
三、 任务 
附件是某超市 2015 年 1 月 1 日至 4 月 30 的经营数据,请根据附件编程完
成以下任务:

任务1 数据预处理与统计

任务1.1 对数据作必要的预处理,在报告中列出处理步骤,将处理后的结果保存为“task1_1.csv”。

 

 

 

任务1.2 统计每个大类商品的销售金额,将结果保存为“task1_2.csv”。

  

任务1.3 统计每个中类商品的促销销售金额和非促销销售金额,将结果保存为“task1_3.csv”。

 

 

任务1.4 统计生鲜类产品和一般产品的每周销售金额,将结果保存为“task1_4.csv”。

 

 

任务1.5 统计每位顾客每月的消费额及消费天数,将结果保存为“task1_5.csv”,并在报告中列出用户编号为0-10的结果。

 

任务2 数据分析

任务2.1 绘制生鲜类商品和一般商品每天销售金额的折线图,并分析比较两类产品的销售状况。

 

 

任务2.2 按月绘制各大类商品销售金额的占比饼图,并分析其销售状况。

 

 

任务2.3 绘制促销商品和非促销商品销售金额的周环比增长率柱状

 

任务3 促销策略

任务3.1 根据消费情况,分别为累计消费前10的顾客画像。

 

 

任务3.2 分析各大类商品的销售情况,总结其销售规律。 

 

 

任务3.3 分析促销对商品销售的影响,为超市制定销售策略提供建议。

 

 

好的,这是一个比较具体的实战项目,需要综合运用 Spark 中的 DataFrame API 进行数据处理和分析。下面是具体的步骤: 1. 准备数据源 将汽车销售数据存储在 HDFS 或者本地文件系统中,可以使用 SparkSession 对象的 read 方法读取数据,比如: ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName("CarSalesAnalysis").getOrCreate() sales_data = spark.read.csv("path/to/car_sales_data.csv", header=True, inferSchema=True) ``` 2. 数据清洗和预处理 使用 DataFrame API 中的各种函数和操作符,对数据进行清洗和预处理,比如使用 dropDuplicates 方法去重,使用 na.fill 方法填充缺失值,使用 withColumnRenamed 方法重命名列名等。 ```python # 去重 sales_data = sales_data.dropDuplicates() # 填充缺失值 sales_data = sales_data.na.fill(0, subset=["sales", "quantity"]) # 重命名列名 sales_data = sales_data.withColumnRenamed("carType", "car_type").withColumnRenamed("saleDate", "sale_date") ``` 3. 数据分析 3.1 总体销售情况分析 使用 DataFrame API 中的 count、sum、avg、max、min 等函数,对销售数据进行总体分析,比如: ```python # 统计总销售额和总销量 total_sales = sales_data.selectExpr("sum(sales) as total_sales").collect()[0][0] total_quantity = sales_data.selectExpr("sum(quantity) as total_quantity").collect()[0][0] # 统计平均销售额和平均销量 avg_sales = sales_data.selectExpr("avg(sales) as avg_sales").collect()[0][0] avg_quantity = sales_data.selectExpr("avg(quantity) as avg_quantity").collect()[0][0] # 统计最大销售额和最小销售额 max_sales = sales_data.selectExpr("max(sales) as max_sales").collect()[0][0] min_sales = sales_data.selectExpr("min(sales) as min_sales").collect()[0][0] ``` 3.2 不同车型销售情况分析 使用 DataFrame API 中的 groupBy、sum、count、avg、max、min 等函数,对不同车型的销售情况进行分析,比如: ```python # 统计不同车型的销售额和销量 sales_by_car_type = sales_data.groupBy("car_type").agg({"sales": "sum", "quantity": "sum"}) # 统计不同车型的平均销售额和平均销量 avg_sales_by_car_type = sales_data.groupBy("car_type").agg({"sales": "avg", "quantity": "avg"}) # 统计不同车型的最大销售额和最小销售额 max_min_sales_by_car_type = sales_data.groupBy("car_type").agg({"sales": "max", "sales": "min"}) ``` 3.3 不同区域销售情况分析 使用 DataFrame API 中的 groupBy、sum、count、avg、max、min 等函数,对不同区域的销售情况进行分析,比如: ```python # 统计不同城市的销售额和销量 sales_by_city = sales_data.groupBy("city").agg({"sales": "sum", "quantity": "sum"}) # 统计不同城市的平均销售额和平均销量 avg_sales_by_city = sales_data.groupBy("city").agg({"sales": "avg", "quantity": "avg"}) # 统计不同城市的最大销售额和最小销售额 max_min_sales_by_city = sales_data.groupBy("city").agg({"sales": "max", "sales": "min"}) ``` 3.4 汽车销售趋势分析 使用 DataFrame API 中的 groupBy、sum、count、avg、max、min 等函数,对汽车销售的时间趋势进行分析,比如: ```python # 统计每个月份的销售额和销量 sales_by_month = sales_data.groupBy("month").agg({"sales": "sum", "quantity": "sum"}) # 统计每销售额和销量 sales_by_year = sales_data.groupBy("year").agg({"sales": "sum", "quantity": "sum"}) ``` 4. 结果保存 将分析结果保存到 HDFS 或者本地文件系统中,可以使用 DataFrame API 中的 write 方法,比如: ```python sales_by_car_type.write.csv("path/to/sales_by_car_type.csv", header=True) ``` 这样就完成了汽车销售Spark数据处理数据分析项目的实战。当然,具体的实现还需要根据实际情况进行调整和优化。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西皮树下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值