天天看点

python分析保险销售数据_python分析医院销售数据

@猴子 近日,刚学完Python数据分析课程,以下是课堂笔记。

数据来源:朝阳医院2018年销售数据.xlsx

(为了方便大家的练习,原始数据如下。拜托,一定要点赞哦。)

提取码:rffc

1.提出问题

一切分析都是以解决问题为最终目标,因此,我们搜集了业务方提出的以下需求:

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

2.理解数据

1)读取数据

#读取Excel数据,统一先按照str读入,之后转换

import pandas as pd

import numpy as np

fileNameStr='E:/朝阳医院2018年销售数据.xlsx'

xls=pd.ExcelFile(fileNameStr,dtype='object')

salesDf=xls.parse('Sheet1',dtype='object')

2)数据信息

打印数据前几行

salesDf.head()

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

数据行列信息

salesDf.shape

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

查看列数据类型

salesDf.dtypes

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

3.数据清洗

1)选择子集

subSalesDf=salesDf.loc[0:4,'购药时间':'销售数量']

subSalesDf

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

2)列名重命名

colNameDict={'购药时间':'销售时间'}

salesDf.rename(columns=colNameDict,inplace=True)

salesDf.head()

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

3)缺失数据处理

print('删除缺失值前大小',salesDf.shape)

salesDf=salesDf.dropna(subset=['销售时间','社保卡号'],how='any')

print('删除缺失后大小',salesDf.shape)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

4)数据类型转换

字符串转换为数值(浮点数)

salesDf['销售数量']=salesDf['销售数量'].astype('float')

salesDf['应收金额']=salesDf['应收金额'].astype('float')

salesDf['实收金额']=salesDf['实收金额'].astype('float')

print('转换后的数据类型:\n',salesDf.dtypes)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

处理日期-字符串分割

def splitSaletime(timeColSer):

timeList=[]

for value in timeColSer:

dateStr=value.split(' ')[0]

timeList.append(dateStr)

timeSer=pd.Series(timeList)

return timeSer

timeSer=salesDf.loc[:,'销售时间']

dateSer=splitSaletime(timeSer)

dateSer[0:3]

salesDf.loc[:,'销售时间']=dateSer

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

字符串转换日期

salesDf.loc[:,'销售时间']=pd.to_datetime(salesDf.loc[:,'销售时间'],

format='%Y-%m-%d',

errors='coerce'

)

salesDf=salesDf.dropna(subset=['销售时间','社保卡号'],how='any')

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

排序

salesDf=salesDf.sort_values(by='销售时间',ascending=True)

print(salesDf)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

重命名行名

salesDf=salesDf.reset_index(drop=True)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

每一列的描述统计信息:

salesDf.describe()

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

通过条件判断筛选出数据

querySer=salesDf.loc[:,'销售数量']>0

print('删除异常值前:',salesDf.shape)

salesDf=salesDf.loc[querySer,:]

print('删除异常值后:',salesDf.shape)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

4.构建模型

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

月均消费次数=总消费次数/月份数

(规定同一天内,同一个人发生的所有消费算作一次消费。)

求总消费次数:

step1:删除重复数据

step2:有多少行

kpi1_Df=salesDf.drop_duplicates(subset=['销售时间','社保卡号'])

totalI=kpi1_Df.shape[0]

print('总消费次数=',totalI)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

求月份数:

step1:排序

step2:获取时间范围

step3:计算月份数

kpi1_Df=kpi1_Df.sort_values(by='销售时间',ascending=True)

kpi1_Df=kpi1_Df.reset_index(drop=True)

startTime=kpi1_Df.loc[0,'销售时间']

endTime=kpi1_Df.loc[totalI-1,'销售时间']

daysI=(endTime-startTime).days

monthsI=daysI//30

print('月份数:',monthsI)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

业务指标1:月均销售次数=

kpi1_I=totalI//monthsI

print('业务指标1:月均消费次数=',kpi1_I)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

业务指标2:月均消费金额=总消费金额/月份数

totalMoneyF=salesDf.loc[:,'实收金额'].sum()

monthMoneyF=totalMoneyF/monthsI

print('业务指标2:月均消费金额=',monthMoneyF)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

业务指标3:客单价=总消费金额/总消费次数

pct=totalMoneyF/totalI

print('客单价:',pct)

python分析保险销售数据_python分析医院销售数据
python分析保险销售数据_python分析医院销售数据

5.数据可视化

稍后补充。

记得点赞哦~