数据分析的步骤:提出问题→理解数据→数据清洗→构建模型→数据可视化
目标数据:2018年朝阳医院销售数据.xlsx
业务部门下发了一项业务分析目标,把数据发给我的时候就在思考该怎么分析,接下来一起探讨怎么进行简单的数据分析
一、提出业务指标问题
从销售数据中分析下面的业务指标问题:
(1)月均消费次数
(2)月均消费金额
(3)客单价
(4)消费趋势
导入所需要的包
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
import pandas as pd
import numpy as np
将销售Ecxcel数据导入到python中
fileNameStr='E:\\2018python\朝阳医院2018年销售数据.xlsx'
xls=pd.ExcelFile(fileNameStr,dtype='object')
salesDf = xls.parse('Sheet1',dtype='object')
查看前五行数据
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) 可以查看到数据有6578行,7列。 查看列的数据类型
salesDf.dtypes
购药时间 object
社保卡号 object
商品编码 object
商品名称 object
销售数量 object
应收金额 object
实收金额 object
dtype: object
二、数据清洗(数据预处理)
数据预处理主要有以下步骤:
(1)选择子集
(2)列名重命名
(3)删除缺失数据
(4)数据类型转换
(5)数据排序
(6)异常值处理
1.选择子集
本案例子集不用选择子集,需要的子集已经存在
2.列名重命名
salesDf.rename(columns ={
'购药时间':'销售时间'},inplace=True) #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. 删除缺失数据
删除列(销售时间,社保卡号)中为空的行,使用dropna删除缺失数据
print('删除缺失值前大小',salesDf.shape)
#how='any' 给定