利用python进行数据分析——医院销售额案例

import pandas as pd
import numpy as  np

一、提出问题

从销售数据中分析出以下业务指标:
1)月均消费次数2)月均消费金额3)客单价4)消费趋势

代码:FileName="朝阳医院2018年销售数据.xlsx"
     whole_data =pd.ExcelFile(FileName,dtype='object')
     data=whole_data.parse("Sheet1", dtype='object')
     data_4.ix[:,"销售数量"]=data_4.ix[:,"销售数量"].astype("float")
     data_4.ix[:,"实收金额"]=data_4.ix[:,"实收金额"].astype("float")
     data_4.ix[:,"应收金额"]=data_4.ix[:,"应收金额"].astype("float")
     data_4.dtypes

购药时间     object
社保卡号     object
商品编码     object
商品名称     object
销售数量    float64
应收金额    float64
实收金额    float64
dtype: object

二、数据清洗

(一)删除缺失值

代码:data_2=data.dropna()
     data_2.head()

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

(二)删除销售数量<=0的行

#法一
代码:xx=data_2.ix[:,"销售数量"]>0
     print(data_2.shape)
     data_4=data_2.ix[xx,:]
     print(data_4.shape)
#法二

代码:xx=data_2.loc[:,'销售数量']>=0
     print('删除异常值前:',data_2.shape,type(xx))
     data_2=data_2.loc[xx,:]
     print('删除异常值后:',data_2.shape)

(6575, 7)
(6532, 7)

代码:data_4.describe()

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

代码:data_4.head()

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

(三)将”购药时间”一列只留下具体日期

代码:testList='2018-06-03 星期五'.split(" ")

定义函数:分割销售日期,获取销售日期
输入:line 销售时间这一列,是个Series数据类型
输出:分割后的时间,返回也是个Series数据类型

代码:def change(line):
         new_ine=[]
         for i in line:
             new_value=i.split(' ')[0]
             newline.append(new_value)
         new_series=pd.Series(newline)
         return new_series
     change_firstline=data_4.ix[:,"购药时间"]

由于字符串在转换为日期数据类型过程中,如不符合上述代码规则的将会产生缺失值,因此要将缺失值删去。

代码:data_4.ix[:,0]=change_newline
     v=data_4.ix[:,0]

其中v有一部分缺失值故要将其删除

《利用python进行数据分析——医院销售额案例》

#vv=data_4.ix[v.isnull()==True,"购药时间"]
代码:data_5=data_4[v.isnull()==False]#只保留无缺失值的数据
     print(data_4.shape)
     print(data_5.shape)

(6532, 7)
(6489, 7)

(四)转换数据类型

#转换数据类型
代码:data_5.loc[:,'购药时间']=pd.to_datetime(data_5.ix[:,'购药时间'],
                                    format='%Y-%m-%d', 
                                    errors='coerce')
     data_5.dtypes

购药时间    datetime64[ns]
社保卡号            object
商品编码            object
商品名称            object
销售数量           float64
应收金额           float64
实收金额           float64
dtype: object

代码:print(data_5.shape)
     data_6=data_5.dropna(subset=['购药时间','社保卡号'],how='any')
     print(data_6.shape)
'''转换日期过程中不符合日期格式的数值会被转换为空值, 这里删除列(销售时间,社保卡号)中为空的行'''

(6489, 7)
(6466, 7)

代码:data_6.describe()

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

(五)按时间顺序排序

代码:data_7=data_6.sort_values(by="购药时间",
                         ascending= True)
     #按购药时间排序,ascending True为升序
     data_7.head()

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

代码:data_7.dtypes

购药时间    datetime64[ns]
社保卡号            object
商品编码            object
商品名称            object
销售数量           float64
应收金额           float64
实收金额           float64
dtype: object

(六)重命名index

代码:data_8=data_7.reset_index(drop=True)
     data_8.head()

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

三、构建模型

代码:kpi1_Df=data_8.drop_duplicates(subset=['购药时间', '社保卡号'])

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

代码:kpi1_Df=kpi1_Df.sort_values(by='购药时间',
                    ascending=True)
     #重命名行名(index)
     kpi1_Df=kpi1_Df.reset_index(drop=True)
     totalI=kpi1_Df.shape[0]
     totalI

6229

第2步:获取时间范围

#最小时间值
代码:startTime=kpi1_Df.loc[0,'购药时间']
#最大时间值
代码:endTime=kpi1_Df.loc[totalI-1,'购药时间']

第3步:计算月份数

#天数
#月份数: 运算符“//”表示取整除 
#返回商的整数部分,例如9//2 输出结果是4
代码:daysI=(endTime-startTime).days
     monthsI=daysI//30
     print('月份数:',monthsI)
     print('月份数:',endTime)
     print('月份数:',totalI)

月份数: 6
月份数: 2018-07-19 00:00:00
月份数: 6229

代码:kpi1_I=totalI // monthsI
     print('业务指标1:月均消费次数=',kpi1_I)

业务指标1:月均消费次数= 1038

#总消费金额
代码:totalMoneyF=data_8.loc[:,'实收金额'].sum()
#月均消费金额
代码:monthMoneyF=totalMoneyF / monthsI
print('业务指标2:月均消费金额=',monthMoneyF)

业务指标2:月均消费金额= 50535.0133333

代码:pct=totalMoneyF / totalI
print('客单价:',pct)

客单价: 48.6771680848

代码:groupDf=data_8
     groupDf.index=groupDf['购药时间']
     gb=groupDf.groupby(groupDf.index.month)
     gb

<pandas.core.groupby.DataFrameGroupBy object at 0x00000206DF6D8400>

#最后获得月数据
代码:mounthDf=gb.sum()
     mounthDf

《利用python进行数据分析——医院销售额案例》
《利用python进行数据分析——医院销售额案例》

    原文作者:凛南
    原文地址: https://zhuanlan.zhihu.com/p/35676121
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞