一,数据分析基本步骤提出问题

理解数据

数据清洗

构建模型

数据可视化

以某医院药品销售为例进行操作说明

1,提出问题

要从销售数据中分析以下业务指标:

1)月均消费次数;

2)月均消费金额;

3)客单价;

4)消费趋势

首先,将数据.xlsx文件导入:

注意电脑中的文件路径默认使用"\",这个时候需要在路径前面加一个r(转义符),也可以不加,但是需要把路径里的"\"转换成“//”

文件中可能有多个sheet,通过设定sheet_name来指定,可以是具体的名字,也可以时顺序,从0开始计数

参数dtype=str 统一先按照字符串读入,之后再转换

salesDf.head(),表示打印出前5行,以确保导入数据正确。括号里可以写入数值,指定显示行数,如果写入n,则显示n*5行

第二部理解数据,比较容易理解,在这里不做说明。

2,数据清洗

在整个数据分析过程中,数据的清洗会占用很多的时间,因此我们要牢记清洗步骤,以提高效率。

1)选择子集

选择子集表示只选取我们要进行分析的数据,选取某一行,某一列等。我们要分析的问题需要所有数据集合,因此这里我们不做操作,只做说明。

可通过.loc在数据里进行选取

2)列名重命名

为了方便接下来的分析,可以把列名进行重命名操作

这里把列名“购药日期”重命名为“销售日期”

注意colums参数里前面是需要重命名的列名,后面是所需的重命名

inplace有两个参数,True表示在原表的基础上直接进行修改,如果是False,则要新增一列

3)缺失值处理

首先查看一下删除缺失值之前数据大小

用.dripna对空值进行删除操作

注意如果,执行之后空值并未删除,这是因为这里的nan实际是一个空字符串,.dropna在使用时并不会将空字符串当作缺失值处理。因此用replace将字符串nan替代为真正的缺失值np.nan,再进行.dropna

.dropna里的参数subset表示指定需要查找空值的列

.dropna里的参数how有两个参数,当用"any"时表示只要有空值就把所在行删除,取“all”时,表示只有一整行都为NaN时,把整行删除

删除之后,数据行数从6578变成6575,说明空值被删除

4)数据类型转换

在导入数据时,我们指定了数据类型为str,但是有些行的数据并非字符串类型,需要将字符串转换字符串转换为数值(浮点型)字符串转换为日期数据类型

数据里销售时间显示的形式为“2018-01-01 星期五”,我们只需要前面的年月日,后面的星期不需要,因此需要进行处理

这里用到了函数:定义函数:分割销售日期,获取销售日期

输入:timeColSer 销售时间这一列,是个Series数据类型

输出:分割后的时间,返回也是个Series数据类型

接下来将字符串转换为日期

转换日期时,不符合格式的日期会被转换成空值,因此要再一次删掉空值

5)数据排序

数据排序会使我们发现很多关键问题

注意.sort_values的ascending参数,ascending=True 表示升序排列,ascending=True表示降序排列

na_position='first'表示排序的时候,把空值放到前列,这样可以比较清晰的看到哪些地方有空值

重新排序之后,我们将索引也进行重置

6)异常值处理

可以通过.describe来查看数据的描述统计,发现销售数量的最小值为负值,肯定是存在异常值

4,构建模型指标1:月均消费次数=总消费次数/月份数

总消费次数:同一天内,同一个人发生的所有消费算作一次消费,因此,要进行删除重复值的操作

计算时间范围

第1步:按销售时间升序排序

第2步:获取时间范围

所以业务指标月均消费次数指标2:月均消费金额=总消费金额/月份数指标3:客单价=总消费金额/总消费次数指标4:消费趋势,画图:折线图(待续)