代码,数据,题目:
GitHub:https://github.com/Fuyizhan/DataAnalysis_tipdm
一、 背景
近年来,随着新零售业的快速发展,消费者购买商品时有了更多的对比和选择,导致超市行业的竞争日益激烈,利润空间不断压缩。超市的经营管理产生了大量数据,对这些数据进行分析,可以提升超市的竞争力,为超市的运营及经营策略调整提供重要依据。
二、 目标
- 对销售数据进行统计分析,并作可视化展示。
- 分析顾客的消费行为。
- 研究促销对销售的影响。
三、 任务
附件是某超市 2015 年 1 月 1 日至 4 月 30 的经营数据,请根据附件编程完成以下任务:
任务 1 数据预处理与统计
任务 1.1
对数据作必要的预处理,在报告中列出处理步骤,将处理后的结果保存为“task1_1.csv”
预处理思路: 去重复 填空值 日期规范化 删除异常值
数据读取
import pandas as pd
data_csv = pd.read_csv(r"D:\googledownload\附件.csv", encoding='gbk')
# r 是防止反斜杠转义的 gbk--简体中文
数据去重
data_csv.drop_duplicates(inplace=True)
去除空值
data_csv = data_csv.dropna(how='any')
# how='any' 即所处行有任意一值为空值,则删除此行
# how='all' 即所处行所有值为空值,则删除此行
日期规范化
data_csv['销售日期'] = pd.to_datetime(data_csv['销售日期'], format='%Y%m%d', errors='coerce')
data_csv = data_csv.dropna(how='any')
# errors='coerce' 即任何不能转化成数字的都被NaN值代替
# 再把不能转化为所设规范格式的数据行给删掉
删除异常值
data_csv.drop('销售月份', axis=1, inplace=True)
# 销售日期中包含销售月份,所以删除销售月份
print('删除异常值之前:', data_csv.shape)
data_csv = data_csv[(data_csv['销售数量'] > 0) & (data_csv['销售金额'] > 0)]
print('删除异常值之后:', data_csv.shape)
# 删除销售数量和销售金额小于0的异常值
数据存储
data_csv.to_csv(r'C:\PycharmProjects\project1\超市销售数据分析\result\task1_1.csv', index=False, encoding='gbk')
#将data存储为task1_1.csv
任务 1.2
统计每个大类商品的销售金额,将结果保存为“task1_2.csv”。
思路:以大类名称为组区别,进行销售金额的求和
读取预处理后的数据
data_csv = pd.read_csv(r'C:\PycharmProjects\project1\超市销售数据分析\result\task1_1.csv', encoding='gbk')
分组求和
data_main_category = data_csv.groupby(['大类名称']).agg({'销售金额': 'sum'}).reset_index()
data_main_category.rename(columns={'销售金额': '销售金额总和'}, inplace=True) # 重命名
数据存储
data_main_category.to_csv(r'C:\PycharmProjects\project1\超市销售数据分析\result\task1_2.csv', index=False, encoding='gbk')
#将data存储为task1_2.csv
任务 1.3
统计每个中类商品的促销销售金额和非促销销售金额,将结果保存为“task1_3.csv
思路:先以是否促销为区别 获取每个商品的销售情况
再以中类名称为组区别,进行销售金额的求和
读取数据
data_csv = pd.read_csv(r'C:\PycharmProjects\project1\超市销售数据分析\result\task1_1.csv', encoding='gbk')
促销
data_csv_yes = data_csv[data_csv['是否促销'] == '是'].groupby('中类名称').agg({'销售金额': 'sum'})
data_csv_yes.rename(columns={'销售金额': '促销销售金额总和'}, inplace=True)