数据准备(本实例是在jupyter上运行)
数据分析的目的
以朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。
数据分析基本过程包括:
获取数据、数据清洗、构建模型、数据可视化以及消费趋势分析。
导入原始数据
import numpy as np
from pandas import Series,DataFrame
import pandas as pd
# 导入数据
file_name = '朝阳医院2018年销售数据.xlsx'
# 使用ExcelFile()时需要传入目标excel文件所在路径及文件名称
xls = pd.ExcelFile(file_name)
# 使用parse()可以根据传入的sheet名称来提取对应的表格信息
dataDF = xls.parse('Sheet1', dtype='object')#指定表格sheet1
# 输出前五行数据
dataDF.head(10)
# 使用sheet_names来查看当前表格中包含的所有sheet名称(按顺序)
xls.sheet_names[0]
查看数据基本信息
# 查看数据几行几列
dataDF.shape#查看形状
#查看索引
dataDF.index
#查看每一列的列表头内容
dataDF.columns
#查看每一列数据统计数目
dataDF.count()
dataDF.info()
dataDF.describe()#数据描述
数据清洗
数据清洗过程包括:选择子集、列名重命名、缺失数据处理、数据类型转换、数据排序及异常值处理
(1)选择子集
在我们获取到的数据中,可能数据量非常庞大,并不是每一列都有价值都需要分析,这时候就需要从整个数据中选取合适的子集进行分析,这样能从数据中获取最大价值。在本次案例中不需要选取子集,暂时可以忽略这一步。
(2)列重命名
在数据分析过程中,有些列名和数据容易混淆或产生歧义,不利于数据分析,这时候需要把列名换成容易理解的名称,可以采用rename函数实现:
#先查看数据
dataDF.head()
进行修改(以购药时间,和销售时间两列为基准)
dataDF.rename(columns={'购药时间':'销售时间'}, inplace=True)#inplace对修改后的数据保存到原数据中
dataDF.head()
(3)缺失值处理
获取的数据中很有可能存在缺失值,通过查看基本信息可以推测“购药时间”和“社保卡号”这两列存在缺失值,如果不处理这些缺失值会干扰后面的数据分析结果。
缺失数据常用的处理方式为删除含有缺失数据的记录或者利用算法去补全缺失数据。
在本次案例中为求方便,直接使用dropna函数删除缺失数据,具体如下&#