import pandas as pd
filename='./朝阳医院2018年销售数据.xlsx'
xls=pd.ExcelFile(filename,dtype='object')
salesDF=xls.parse('Sheet1',dtype='object')
1.提出问题
从销售数据中分析出以下业务指标:
1)月均消费次数
2)月均消费金额
3)客单价
4)消费趋势
'''
查看数据基本信息
'''
salesDF.head()
购药时间 | 社保卡号 | 商品编码 | 商品名称 | 销售数量 | 应收金额 | 实收金额 | |
---|---|---|---|---|---|---|---|
0 | 2018-01-01 星期五 | 001616528 | 236701 | 强力VC银翘片 | 6 | 82.8 | 69 |
1 | 2018-01-02 星期六 | 001616528 | 236701 | 清热解毒口服液 | 1 | 28 | 24.64 |
2 | 2018-01-06 星期三 | 0012602828 | 236701 | 感康 | 2 | 16.8 | 15 |
3 | 2018-01-11 星期一 | 0010070343428 | 236701 | 三九感冒灵 | 1 | 28 | 28 |
4 | 2018-01-15 星期五 | 00101554328 | 236701 | 三九感冒灵 | 8 | 224 | 208 |
#查看数据多少列,多少行
salesDF.shape
(6578, 7)
#查看每一列数据类型
salesDF.dtypes
购药时间 object
社保卡号 object
商品编码 object
商品名称 object
销售数量 object
应收金额 object
实收金额 object
dtype: object
2.数据清洗
1)选择子集(本案例不需要选择子集)
#选择子集的方法
#subSalesDF=salesDF.loc[0:4,'购药时间':'销售数量']
2)列名重命名
#旧列名与新列名对应关系
colName={
'购药时间':'销售时间'}
'''
inplace=False数据框本身不会变,会创建一个改动后新数据框,
默认inplace=False
inplace=True,数据框本身会发生改变
'''
salesDF.rename(columns=colName,inplace=True)
salesDF.head()
销售时间 | 社保卡号 | 商品编码 | 商品名称 | 销售数量 | 应收金额 | 实收金额 | |
---|---|---|---|---|---|---|---|
0 | 2018-01-01 星期五 | 001616528 | 236701 | 强力VC银翘片 | 6 | 82.8 | 69 |
1 | 2018-01-02 星期六 | 001616528 | 236701 | 清热解毒口服液 | 1 | 28 | 24.64 |
2 | 2018-01-06 星期三 | 0012602828 | 236701 | 感康 | 2 | 16.8 | 15 |
3 | 2018-01-11 星期一 | 0010070343428 | 236701 | 三九感冒灵 | 1 | 28 | 28 |
4 | 2018-01-15 星期五 | 00101554328 | 236701 | 三九感冒灵 | 8 | 224 | 208 |
3)缺失数据的处理
#删除前数据大小
salesDF.shape
(6578, 7)
#删除列(销售时间,社保卡号)中为空的行
#how=‘any’ 在给定的任何一列中有缺失值就删除
salesDF=salesDF.dropna(subset=['销售时间','社保卡号'],how='any')