python分析每月销售数据_如何用Python分析销售数据
数据分析的基本过程分为五个部分:提出问题、理解数据、数据清洗、构建模型、数据可视化。下面我以前四部分为基础,对一个销售数据进行分析。
1 提出问题
分析目标:根据以下三个业务指标分析医院的销售情况:月均消费次数、月均消费金额、客单价。
首先导入数据分析包和数据文件
import pandas as pd
fileNameStr='./朝阳医院2018年销售数据.xlsx'
xls=pd.ExcelFile(fileNameStr,dtype='object')
salesDf=xls.parse('Sheet1',dtype='object')
2 理解数据
描述数据,基本了解数据情况。
在这里,我们要了解,需要哪些指标和如何达成分析的目标。
1.月均消费次数=一年的消费次数/月份
一年的消费次数=有消费记录数据的总和(同一个人在一天内只计一次消费)
2.月均消费金额=总实收金额/月份
3.客单价=总消费金额/总消费次数
3 数据清洗
1 列表重命名
colNameDict={'购药时间':'销售时间'}
salesDf.rename(columns=colNameDict,inplace=True)
salesDf.head()
2 缺失数据处理
3 数据类型转换
3.1 字符串转换为数值
salesDf['销售数量']=salesDf['销售数量'].astype('float')
salesDf['应收金额']=salesDf['应收金额'].astype('float')
salesDf['实收金额']=salesDf['实收金额'].astype('float')
salesDf.dtypes
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()
转换为日期格式
salesDf.loc[:,'销售时间']=pd.to_datetime(salesDf.loc[:,'销售时间'],
format='%Y-%m-%d',
errors='coerce')
删除转换日期格式中的空值
salesDf=salesDf.dropna(subset=['销售时间','社保卡号'],how='any')
4 数据排序
把数据按销售时间进行升序排列
salesDf=salesDf.sort_values(by='销售时间',ascending=True)
salesDf.head(3)
更新排序后的行号
salesDf=salesDf.reset_index(drop=True)
salesDf.head()
5 异常值处理
salesDf.describe()
我们发现销售数量和实收金额为负数,这在现实中是不合理的,所以我们需要筛选出正数来分析。
querySer=salesDf.loc[:,'销售数量']>0
#应用查询条件
print('before',salesDf.shape)
salesDf=salesDf.loc[querySer,:]
print('after',salesDf.shape)
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()
下面,获取最大和最小的时间值范围,计算出月份数为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分析销售数据相关推荐
- python情绪分析的意义_如何用Python和R对故事情节做情绪分析?
想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...
- 用python画机器猫代码_如何用Python画一只机器猫?| 原力计划
原标题:如何用Python画一只机器猫?| 原力计划 作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自 ...
- python 读取excel图片_如何用Python读取Excel中图片?
公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...
- 怎么用python读取excel图_如何用Python读取Excel中图片?
公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...
- python编程代码画画_如何用python编写一个绘制马赛克图像的自写程序
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...
- python 文本翻译 项目_如何用python批量翻译文本?
首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...
- python交互界面数据分析_如何用 Python 和 Streamlit 做交互式数据分析产品?
「本文参与少数派 2019 年度征文 + 效率有心得」 不用学前端编程,你就能用 Python 简单高效写出漂亮的交互式 Web 应用,将你的数据分析成果立即展示给团队和客户. 痛点 从我开始折腾数据 ...
- python 登陆淘宝_如何用 Python 自动登录淘宝并保存登录信息?
原标题:如何用 Python 自动登录淘宝并保存登录信息? 作者 | 猪哥 责编 | 伍杏玲 前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之 ...
- python 矩阵运算 for循环_如何用 Python 科学计算中的矩阵替代循环
展开全部 因为在Mathematica中使用循环确实是低效的.32313133353236313431303231363533e78988e69d8331333361313961..... 深层次的原 ...
- python搭建自动化测试平台_如何用python语言搭建自动化测试环境
原标题:如何用python语言搭建自动化测试环境 技术分享:基于Python语言的Web自动化测试环境搭建 近期发现很多初学者在学习自动化的过程当中,在环境安装环节总是出现问题,所以详细的出一篇环境搭 ...
最新文章
- 给gridview动态生成radiobutton添加OnCheckedChanged监听函数
- 为什么计算机桌面图标不见了,电脑桌面图标都没了,详细教您电脑桌面图标都没了怎么恢复...
- 蓝桥杯java第八届第六题--最大公共子串
- 百题大冲关系列课程更新啦!这次是 Golang
- 如何判断对象是否存活之引用计数发
- jQuery课程介绍、Query的介绍、Query初次体验、jQuery再次体验、jQuery中的顶级对象
- 别等了,全面「远程办公」凉了
- idea怎么把代码放到git_在IDEA中如何初始化Git,把项目推送到Git上
- python:找出两个列表中相同和不同的元素(使用推导式)
- solve mass matrix in matlab
- C#多线程学习(三) 生产者和消费者 (转载系列)——继续搜索引擎研究
- POJ 2828 Buy Tickets(单点更新) 详细题解和思路
- jaxb xml 生成 java_java-如何使用JAXB定制XML导出
- vim 基础学习之插入模式
- 前端基础 IE浏览器渲染-重置浏览器默认样式
- php二维码与电子名片
- win10如何找计算机管理员密码,win10怎么修改administrator账户密码 win10修改管理员账户密码方法...
- 【5G系列】RLC (Radio Link Control )协议详解
- Mqtt通信协议详解
- Windows系统盘空间大清理
热门文章
- 一、 Hbase特性 3v特性,Volume(量级) Varity(种类) Velocity(速度)
- PC端页面适应不同的分辨率的方法
- Golang里的AES加密、解密
- 计算机的6种典型应用领域,人工智能已经广泛应用到许多领域,其典型的应用包括这些...
- 彩色证件照片常用的红色、蓝色背景颜色值 1
- fedroa设置启动快捷键
- Mac m1 python软件环境安装配置
- TextView 字体中间加 横划线
- c语言的源程序一行可以书写多个语句,C语言 选择题(最全版)
- 如何增加微信阅读量,新手公众号如何增加阅读量