分析目标:根据药店销售数据,分析药品销售关键指标,以及药品销售趋势

1. 导入并清理数据

import pandas as pd# 以object形式输入数据可保持数据原始形状,之后可用astype()转换数据格式
sale_data=pd.read_excel('药店2018年销售数据.xlsx',0,dtype='object')

# 1. 列名重置:更改购药时间为销售时间
dfrename = {"购药时间":"销售时间"}
sale_data.rename(columns=dfrename,inplace=True)# 2. 处理缺失值
# 查找缺失值
sale_data.isnull().sum()# 删除缺失值
sale_df=sale_data.dropna(subset=['销售时间','社保卡号'],how='any',axis=0)
sale_df.shape# 删除缺失值后需重设索引,加drop=True可将原索引删除,否则原索引将保存为列名为index的一列
sale_df=sale_df.reset_index(drop=True)# 3. 提取数据并转换数据格式
# 将销售数量,应收金额,实收金额转换成浮点型
sale_df['销售数量']=sale_df['销售数量'].astype('float')
sale_df['应收金额']=sale_df['应收金额'].astype('float')
sale_df['实收金额']=sale_df['实收金额'].astype('float')
sale_df.dtypes# 4. 处理日期数据
# 提取销售时间
date = pd.DataFrame(sale_df['销售时间'].apply(lambda s: s.split(" ")).values.tolist(),columns=['日期','星期'])
# 将日期的object类型转换成日期类型
# 加errors='coerce',如果原始数据不符合日期的格式,转换后的值为空值NaT
date['日期']=pd.to_datetime(date['日期'],format='%Y-%m-%d',errors='coerce')
sale_df1 = sale_df
sale_df1['销售日期']=date['日期']
sale_df1['销售星期']=date['星期']# 转换日期格式时,不符合日期格式的会转换成空值,删除空值行
sale_df1 = sale_df1.dropna(subset=['销售日期'],how='any')
# 重置index
sale_df1=sale_df1.reset_index(drop=True)# 5. 按日期排序
sale_df1=sale_df1.sort_values(by='销售日期',ascending=True)
# 重置index
sale_df1=sale_df1.reset_index(drop=True)# 6.异常值处理
# 查看有无异常值
sale_df1.describe()
# “销售数量“,”金额“ 最小值不能低于0
print("删除异常值前:",sale_df1.shape)
querySer = sale_df1.loc[:,'销售数量']>0
sale_df2 = sale_df1.loc[querySer,:]
print("删除异常值后:",sale_df2.shape)

2. 分析数据

a. 计算关键指标:每月平均消费次数,每月平均消费金额,客单价

'''
业务指标1:月均消费次数=每月消费次数平均值
条件:同一人同一天发生的所有消费视作一次
方法:”销售日期“和”社保卡号“若同时相同,则只保留一项计数
'''
kpi1 = sale_df2.drop_duplicates(subset=['销售日期','社保卡号'])
# 按时间顺序排序
kpi1 = kpi1.sort_values(by='销售日期',ascending=True)
# 重置索引
kpi1=kpi1.reset_index(drop=True)
kpi1.shapekpi1['消费次数']=1
kpi = kpi1
kpi.index=kpi['销售日期']# 用groupby统计每月消费数据
gb=kpi.groupby(kpi.index.month)
MonSales=gb.sum()# 月均消费次数 kpi_1
kpi_1 = MonSales['消费次数'].loc[:6].mean()# 月均销售金额 kpi_2
kpi_2 = MonSales['实收金额'].loc[:6].mean()# 客单价 kpi_3
kpi_3 = MonSales['实收金额'].sum()/MonSales['消费次数'].sum()

b. 比较各时段消费情况:

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']# 每月消费情况对比
f,ax1 = plt.subplots()
MonSales.plot(x=MonSales.index,y=['消费次数'],ax=ax1)
MonSales.plot(x=MonSales.index,y=['实收金额'],ax=ax1,secondary_y=True)# 星期数据处理
kpi2 = kpi1
gb2 = kpi2.groupby(by='销售星期')
WeekSales=gb2.sum()
WeekSales.index=[1,3,2,5,6,4,7]
WeekSales.sort_index(inplace = True)# 星期消费情况对比
f,ax2 = plt.subplots()
WeekSales.plot(x=WeekSales.index,y='消费次数',ax=ax2)
WeekSales.plot(x=WeekSales.index,y='实收金额',ax=ax2,secondary_y=True)

由上图可知:

1. 在月份销售对比中,2月药店销售金额较其他月有明显的下降(7月数据只到7月19日,故不做整体比较),4,5,6月药店销售金额均在38000以上。

2. 在月份销售对比中,4月消费次数最多,但实收金额并不是最高,说明客单次消费相比6月较低。

3. 在星期销售对比中,消费次数和消费金额总体趋势一致,周五为全星期消费次数和消费金额之最,周六次之。周四则消费最少。

c. 销售药品统计

帕累托图

# 根据销售商品名称groupby,排序销售数量,选出Top10
gb3 = pd.DataFrame(sale_df2.groupby(['商品名称']).sum()['销售数量'])
SaleQuantity=gb3.sort_values(by='销售数量',ascending=False)TotalSales=SaleQuantity['销售数量'].sum()# 计算百分比
SaleQuantity['Percentage']=SaleQuantity['销售数量']/TotalSales
SaleQuantity['AcmPerc'] = -1# 计算累计百分比
for i in range(len(SaleQuantity.index)):if i == 0:SaleQuantity['AcmPerc'].iloc[0]=SaleQuantity['Percentage'].iloc[0]else:SaleQuantity['AcmPerc'].iloc[i]=SaleQuantity['Percentage'].iloc[i]+SaleQuantity['AcmPerc'].iloc[i-1]
Top_Sales=SaleQuantity[:10]f,ax3=plt.subplots()
Top_Sales.plot(x=Top_Sales.index,y='销售数量',ax=ax3,kind='bar',title='销售前十',grid=True,rot=70)
ax4 = ax3.twinx()
Top_Sales.plot(x=Top_Sales.index,y='AcmPerc',kind='line',ax=ax4,secondary_y=True,marker='o',rot=70)
for a,b in zip(range(10),Top_Sales['AcmPerc']):plt.text(a,b,'%.2f%%'%(b*100),ha='center',va='bottom')
ax3.legend(loc='upper center')

销售前十的药品如上图所示,且销售前十的药品销售数量占总销售数量的52%。

针对以上数据,还有很多可分析的内容,例如,是否有某药品集中在某一时期被购买的情况,哪些药品通常会被大规模购买,哪些药品在近一年内销售非常少可以适当减少采购量,需根据具体需求具体分析,在此就不再赘述。

Python药店销售数据分析相关推荐

  1. python药店销售数据分析_解析医院药店销售数据,看看Python数据分析结果有什么惊人的发现|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时 ...

  2. python药店销售数据分析_解析医院药店销售数据,看看Python数据分析结果有什么惊人的发现...

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业 ...

  3. python药店销售数据分析_药店经营数据分析案例

    关于 XX 药店 09 年 1~7 月经营数据简析 雪域飞花 受 XX 药店委托, 我们对企业 09 年 1`7 月的经营数据通过瑞商源数据分析系统进行了计 算分析,现将分析结果列示如下: 一.销售数 ...

  4. python药店销售数据分析_药房销售情况分析(python篇)

    运用python中的numpy.pandas等包,可以帮助我们很方便的进行数据统计.数据分析.今天,通过朝阳医院2018的销售数据这个案例来简单做一下展示. 数据分析的基本过程一般分为以下几个部分: ...

  5. python药店销售数据分析_Python数据分析实例一:医院药品销售数据

    前面已经分享过python的基础语法,以及数据分析领域最常用的两个包:Numpy和Pandas(戳下面的链接),下面将用一个实际案例:<朝阳医院2018年销售数据.xlsx>和大家分享一下 ...

  6. python药店销售数据分析_Python:某医院药品销售数据分析

    数据分析步骤: 提出问题-理解数据-数据清洗-构建模型-数据可视化 下面就拿2018年朝阳医院销售数据按上述步骤进行分析. 1.提出问题 根据拿到的销售数据字段信息,我们对以下三个业务指标进行分析 . ...

  7. 基于python的药店管理系统_Python实践案例:药店销售数据分析

    Python中用于处理大量数据的包主要是numpy和pandas,常用于提取以及分析大量数据的有用指标.而Python只是工具,最重要的是分析者对数据的分析思维及对业务指标的理解,利用有用工具对具体数 ...

  8. python营业数据分析_小案例-使用python进行销售数据分析

    数据分析步骤:提出问题.理解数据.数据清洗.构建模型.数据可视化 数据:朝阳医院2018年销售数据 一.提出问题 从销售数据中分析以下业务指标:月均消费次数.月均消费金额.客单价.消费趋势 二.理解数 ...

  9. 练习:药店销售数据分析

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

最新文章

  1. 用Spark实现简单的单词统计
  2. javascript焦点图(根据图片下方的小框自动播放)
  3. 倒排索引(Inverted File Index )
  4. Android JNI学习(四)——JNI的常用方法的API
  5. 玩cf一直连接服务器失败怎么办啊,windows10系统玩cf提示连接服务器失败怎么办...
  6. Yii2 使用 .env 来配置项目环境变量
  7. JS中的map()和forEach()有什么区别?
  8. web-4. 装饰页面的图像
  9. 纠错码较副本优势与minio纠错码配置
  10. 【SAP-CO】成本中心会计报表
  11. video 设置 poster,默认显示视频第一帧
  12. 远程连接华为云服务器上的MySQL
  13. 硬件接口之RGB888(RGB24)
  14. vue 文件上传下载报 文件损坏
  15. ASEMI代理AD9959BCPZ原装ADI车规级AD9959BCPZ
  16. JavaScript星星动画心形js特效
  17. ChatGPT微信插件闪退解决办法
  18. 一点一滴解读网狐的加解密
  19. C#与Halcon混合编程调用笔记本摄像头
  20. .NET程序的序列号控制

热门文章

  1. 数据库课设:机房管理系统
  2. elasticsearch备份
  3. [qiankun]Uncaught Error application ‘vue2‘ died in status LOADING_SOURCE_CODE [qiankun] You need t
  4. Java公安项目系统_劲爆︱开源众包和公安行业强强联手,推出系列好项目。
  5. VIT ③The for loop、while loop in Python
  6. 《黑色沙漠》游戏系统拆解
  7. 省二计算机相关内容,什么是计算机省二考试 以及考试范围
  8. 利用JFM进行多媒体编程(转载)
  9. 掌握 Dart 中库 library 的使用
  10. Kong网关简介安装