一、提出问题

在与业务部门沟通后,通常会更加明确我们要分析的业务问题。本案例中从销售数据中主要分析月消费次数月消费金额客单价、消费趋势四大业务指标。

二、理解数据


python计算银行交易流水单笔进账多笔出账 python分析银行流水_数据


注意:使用网页版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计算银行交易流水单笔进账多笔出账 python分析银行流水_字符串_02


python计算银行交易流水单笔进账多笔出账 python分析银行流水_python统计行号_03


python中缺失值有3种:

① Python内置的None值;

② 在pandas中,将缺失值表示为NA,表示不可用not available;

③ 对于数值数据,pandas使用浮点值NaN(Not a Number)表示缺失数据。

后面出来数据,如果遇到错误:说什么foloat错误,那就是有缺失值,需要处理掉。上图我们用的是dropna()函数将缺失值删除。


python计算银行交易流水单笔进账多笔出账 python分析银行流水_python统计行号_04


在最开始读取Excel中数据时,有如下一行代码,还记得吗?


sales = pd.read_excel(filename, sheet_name = 'Sheet1', dtype = str)


其中”dtype = str“意思是将所有数据都导入为字符串类型。但销售数量、应收金额和实收金额三列应该是浮点型,所以要进行数据类型转换操作。


python计算银行交易流水单笔进账多笔出账 python分析银行流水_数据_05


python计算银行交易流水单笔进账多笔出账 python分析银行流水_缺失值_06


转换日期的过程中不符合日期格式的数值会被转换为空值None,因此这里要再删除一次销售时间和社保卡号列中的空行。


python计算银行交易流水单笔进账多笔出账 python分析银行流水_数据_07


python计算银行交易流水单笔进账多笔出账 python分析银行流水_字符串_08


因为排序后的索引值为之前的行号,所以需要修改为从0-N排序的索引值。


python计算银行交易流水单笔进账多笔出账 python分析银行流水_数据_09


数据基本完成清洗后,计算描述统计信息可以让我们从整体上来了解数据。上图结果可以看到销售数量、应收金额和实收金额的最小值均为负数,这说明是销售数量小于0所导致的。根据常识,这一现象不存在,所以选择删除此类异常值。

四、构建模型

根据最开始提出的业务问题的业务指标计算分析。


python计算银行交易流水单笔进账多笔出账 python分析银行流水_字符串_10