• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D收藏吧

如何用Python分析销售数据

数据分析 Terry 6年前 (2018-03-18) 2099次浏览 已收录 0个评论

数据分析的基本过程分为五个部分:提出问题、理解数据、数据清洗、构建模型、数据可视化。下面我以前四部分为基础,对一个销售数据进行分析。

1 提出问题

分析目标:根据以下三个业务指标分析医院的销售情况:月均消费次数、月均消费金额、客单价。

首先导入数据分析包和数据文件

import pandas as pd
fileNameStr='./朝阳医院2018年销售数据.xlsx'
xls=pd.ExcelFile(fileNameStr,dtype='object')
salesDf=xls.parse('Sheet1',dtype='object')

2 理解数据

描述数据,基本了解数据情况。

如何用Python分析销售数据
如何用Python分析销售数据

在这里,我们要了解,需要哪些指标和如何达成分析的目标。

1.月均消费次数=一年的消费次数/月份

一年的消费次数=有消费记录数据的总和(同一个人在一天内只计一次消费)

2.月均消费金额=总实收金额/月份

3.客单价=总消费金额/总消费次数

3 数据清洗

1 列表重命名

colNameDict={'购药时间':'销售时间'}
salesDf.rename(columns=colNameDict,inplace=True)
salesDf.head()
如何用Python分析销售数据

2 缺失数据处理

如何用Python分析销售数据

3 数据类型转换

3.1 字符串转换为数值

salesDf['销售数量']=salesDf['销售数量'].astype('float')
salesDf['应收金额']=salesDf['应收金额'].astype('float')
salesDf['实收金额']=salesDf['实收金额'].astype('float')
salesDf.dtypes
如何用Python分析销售数据

3.2 字符串转换为日期类型

定义函数

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)
salesDf.loc[:,'销售时间']=dateSer #修改销售时间
salesDf.head()
如何用Python分析销售数据

转换为日期格式

salesDf.loc[:,'销售时间']=pd.to_datetime(salesDf.loc[:,'销售时间'],
                                    format='%Y-%m-%d', 
                                    errors='coerce')
如何用Python分析销售数据

删除转换日期格式中的空值

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

4 数据排序

把数据按销售时间进行升序排列

salesDf=salesDf.sort_values(by='销售时间',ascending=True)
salesDf.head(3)
如何用Python分析销售数据

更新排序后的行号

salesDf=salesDf.reset_index(drop=True)
salesDf.head()
如何用Python分析销售数据

5 异常值处理

salesDf.describe()
如何用Python分析销售数据

我们发现销售数量和实收金额为负数,这在现实中是不合理的,所以我们需要筛选出正数来分析。

querySer=salesDf.loc[:,'销售数量']>0
#应用查询条件
print('before',salesDf.shape)
salesDf=salesDf.loc[querySer,:]
print('after',salesDf.shape)
如何用Python分析销售数据

4 构建模型

在第二步理解数据中,我们了解到同一天中,只计算一次消费次数,这里要对消费次数进行去重。

#同一天去重
kpi1_Df=salesDf.drop_duplicates(subset=['销售时间','社保卡号'])
totalI=kpi1_Df.shape[0]
print('总销售次数',totalI)

获得总消费次数是5342次。接着,来计算月份数。先按销售时间做升序,并对行号重命名。

kpi1_Df=kpi1_Df.sort_values(by='销售时间',ascending=True)
kpi1_Df=kpi1_Df.reset_index(drop=True)
kpi1_Df.head()
如何用Python分析销售数据

下面,获取最大和最小的时间值范围,计算出月份数为6.

startTime=kpi1_Df.loc[0,'销售时间']
endTime=kpi1_Df.loc[totalI-1,'销售时间']
daysI=(endTime-startTime).days
monthsI=daysI//30
print('月份数',monthsI)

接着,计算出第一个业务指标月均消费次数为890.

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

第二个业务指标月均消费金额如下。

如何用Python分析销售数据

第三个业务指标客单价。

如何用Python分析销售数据

到这里,我们通过python一步步的获取到了我们想要的业务指标。根据三个数据,我们来做进一步的思考。这家医院如何才能提高销售额呢?可以从三方面执行:

  1. 提高每月消费次数:可以设置一些促销活动优化购物体验,从而提升顾客再次购买的欲望。
  2. 提高每月消费金额:可以根据病人的经济情况,设定不同的药品。如条件好的,就推荐用一些效果很好的药品。如条件一般,在不降低疗效的情况下,选用一些性价比更高的药品。
  3. 提高客单价:丰富药品的品种,给客户更多的选择。

销售数据的业务指标有相似之处,我们也可以举一反三,拓展到其他销售数据,比如从复购率和单价开始。有了数据分析的指标,还需要通过可视化展示出来。下一讲,我们讨论数据可视化。


相关文章:


作者Terry , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何用Python分析销售数据
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址