目录
- 26个数据分析案例——第三站:基于python的药店销售数据分析
-
- 实验环境
- 数据说明
- 资料包
- 实验步骤
-
- 第一步:加载数据并查看数据详情
- 第二步:数据清洗
-
- 1、选择子集:目的是选择需要分析的列,方法为切片法(loc),代码如下所示。
- 2、列名重命名:把'购药时间'改为'销售时间’,代码如下所示。
- 3、缺失数据处理,用dropna 法处理缺失值,处理前数据大小,代码如下所示。
- 4、处理后的数据大小,代码如下所示。
- 5、数据类型转换:本文数据都是以字符串类型导入的,我们需要将字符串转换为我们需要的数据类型,字符串转换为数值(浮点型),代码如下所示。
- 6、字符串转换为日期数据类型,定义一个用来分割日期数据的函数splitSaletime(),代码如下所示。
- 7、调用splitSaletime()来处理销售时间,代码如下所示。
- 8、修改销售时间,代码如下所示。
- 9、将销售时间列数据字符串型转换为日期型,代码如下所示。
- 10、通过转换,销售时间已经由字符串转换为日期,转换过程中不符合日期格式的数值会被转换为空值,需要将其删除,代码如下所示。
- 11、排序按销售时间的先后顺序进行排序,排序前的数据,代码如下所示。
- 12、对销售时间按序排序,代码如下所示。
- 13、将索引值修改为从0到N按顺序,代码如下所示。
- 14、异常值处理,查看数据看是否存在异常值,代码如下所示。
- 15、处理异常值,代码如下所示。
- 16、对异常值进行处理之后,再使用描述指标查询一次,无异常值,代码如下所示。
- 第三步:构建模型
- 后续案例持续更新
26个数据分析案例——第三站:基于python的药店销售数据分析
实验环境
-
Python: Python 3.x;
-
jupyter
数据说明
当前数据为某医院销售记录,用于记录用户购买药品的相关信息。该数据集包含7个字段,分别是:
• 购药时间。
• 社保卡号。
• 商品编码。
• 商品名称。
• 销售数量。
• 应收金额。
• 实收金额。
资料包
链接:https://pan.baidu.com/s/1KdikbuBaTBGDwgZyPgVv4g
提取码:e46q
实验步骤
第一步:加载数据并查看数据详情
1、导入数据:需要用到Python中的xlrd包,代码如下所示。
#导入数据分析包
import pandas as pd
'''
路径中最好不要有中文,或者特殊符号啥的,不然路径会提示错误找不到。
最后将文件放到一个简单的英文路径下
'''
#读取CSV数据,统一先按照字符串读入,之后转换
salesDf=pd.read_csv('data.csv',dtype={
'社保卡号':str,'商品编码':str})
'''
查看数据基本信息
'''
#打印出前5行,以确保数据运行正常
salesDf.head()
结果如图所示。
2、查看数据类型,代码如下所示。
#查看每一列的数据类型
salesDf.dtypes
第二步:数据清洗
1、选择子集:目的是选择需要分析的列,方法为切片法(loc),代码如下所示。
subset=salesDf.loc[0:3,'购药时间':'商品名称']
subset
结果如图所示。
2、列名重命名:把’购药时间’改为’销售时间’,代码如下所示。
#列名和新列名对应关系
colNameDict={
'购药时间':'销售时间'}
'''
inplace=False,数据框本身不会变,而会创建一个改动后新的数据框,默认的inplace是False
inplace=True,数据框本身会改动
'''
salesDf.rename(columns =colNameDict,inplace=True)
salesDf.head()
结果如图所示。
3、缺失数据处理,用dropna 法处理缺失值,处理前数据大小,代码如下所示。
print('删除缺失值前大小',salesDf.shape)
结果如图所示。
4、处理后的数据大小,代码如下所示。
#删除列(销售时间,社保卡号)中为空的行
#how='any'在给定的任何一列中有缺失值就删除
salesDf=salesDf.dropna(subset=['销售时间','社保卡号'],how='any')
print('删除缺失后大小',salesDf.shape)
结果如图所示。
5、数据类型转换:本文数据都是以字符串类型导入的,我们需要将字符串转换为我们需要的数据类型,字符串转换为数值(浮点型),代码如下所示。
'''
运行后,会报警告SettingWithCopyWarning一般信息有两列,一类是Warning警告信息,一类是Error错误信息。
警告的信息不用管,我们只关注错误类型的信息
'''
#字符串转换为数值(浮点型)
salesDf[