一、提出问题
在与业务部门沟通后,通常会更加明确我们要分析的业务问题。本案例中从销售数据中主要分析月消费次数、月消费金额、客单价、消费趋势四大业务指标。
二、理解数据
注意:使用网页版jupyter notebook读取桌面Excel文件时,刚开始我写的文件路径的代码如下:
filename = ('C:UsersAdministratorDesktopsales_data.xlsx')
这时程序会报错,报错内容为:(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escap。原因:在Python中 是转义符,u表示其后是unicode编码,因此Users在这里会报错。解决办法:在字符串前面加个 r(rawstring 原生字符串),可以避免python与正则表达式语法的冲突,问题成功解决!
三、数据清洗
python中缺失值有3种:
① Python内置的None值;
② 在pandas中,将缺失值表示为NA,表示不可用not available;
③ 对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。
后面出来数据,如果遇到错误:说什么foloat错误,那就是有缺失值,需要处理掉。上图我们用的是dropna()函数将缺失值删除。
在最开始读取Excel中数据时,有如下一行代码,还记得吗?
sales = pd.read_excel(filename, sheet_name = 'Sheet1', dtype = str)
其中”dtype = str“意思是将所有数据都导入为字符串类型。但销售数量、应收金额和实收金额三列应该是浮点型,所以要进行数据类型转换操作。
转换日期的过程中不符合日期格式的数值会被转换为空值None,因此这里要再删除一次销售时间和社保卡号列中的空行。
因为排序后的索引值为之前的行号,所以需要修改为从0-N排序的索引值。
数据基本完成清洗后,计算描述统计信息可以让我们从整体上来了解数据。上图结果可以看到销售数量、应收金额和实收金额的最小值均为负数,这说明是销售数量小于0所导致的。根据常识,这一现象不存在,所以选择删除此类异常值。
四、构建模型
根据最开始提出的业务问题的业务指标计算分析。