本文案例取自猴子社群药店销售数据分析案例,因个人习惯。和原案例代码有所不同,但终究殊途同归,希望能给初学者以思考。此外,本文增加了可视化部分。

数据分析步骤可分为5部分:

1、提出问题

2、理解数据

3、数据清洗

4、构建模型

5、数据可视化

一、提出问题

所有的数据分析首先必须得有一个目标,得知道你需要啥,才能有针对性的去做分析工作。

这里应业务部门需求,要求得知以下几个指标:月均消费次数,月均消费金额,客单价和消费趋势。

二、理解数据

现业务部门提供了一份Excel销售数据,我们首先创建分析环境,并把数据导入进来。

import numpy as np

import pandas as pd

from datetime import datetime

导入Excel数据有两种方法,read_excel和Excelfile,前者是导入路径后者是创建对象,建议使用后者,以免数据复杂时出错。

xls=pd.ExcelFile(r'C:\Users\hubiao1\Desktop\朝阳医院2018年销售数据.xlsx',dtype='object')

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

导入后,查看下数据的大致情况,head看头,tail看尾巴。

saldf.tail()

有七个字段,6000多行数据。

继续查看三连击:

saldf.info()可以看到购药时间和社保卡号有空值

saldf.dtypes #注意这里不需要加括号可以看到时间不是日期格式,金额也不是数值格式,需要转换

saldf.shape

(6578, 7)

通过上边的操作,基本知道数据长啥样了。我们发现有空值和数据类型需要处理。

三、数据清洗

数据分析中,清洗是最花时间的一步,往往我们得到的数据有各种问题,类型不对,空值,异常值等等。这往往是数据分析师最常见的工作。通过清洗,数据分析师会对数据有更深刻的认识,也能对数据的可靠性有一个评估。事实上数据清洗做到位,下边的工作就比较明朗了。

首先我们需要选取子集,去掉我们不需要部分。这里数据量本身就比较小,不做子集处理。选取子集可参考numpy和pandas的切片。

对本数据集我们首先把购药时间换成销售时间,看着比较顺畅。

saldf.rename(columns={'购药时间':'销售时间'},inplace=True)

删除空值,参数any表示只要有一个字段有空值,整行全删掉:

saldf=saldf.dropna(how='any')

查看下:

saldf.info()

接下来进行类型转换,把时间改成日期格式,数量和金额变成数值格式。

转日期格式,首先用split把‘2018-01-24 星期三‘分开,只取2018-01-24。然后用to_excel转换成日期。我这里图方便两步嵌套写在一起了,要易懂的话可以分开写。

errors参数对转换失败的数据返回NaT。

saldf['销售时间']=pd.to_datetime(saldf['销售时间'].map(lambda x: x.split(' ')[0]),

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

errors='coerce')

数量和金额的转换:

saldf[['销售数量','应收金额','实收金额']]=saldf[['销售数量','应收金额','实收金额']].astype('float')

丢掉转换失败的NaT值。实际工作中可能要去分析NaT值的原因,这里主要是二月份的29日超出了日历范围。

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

接下来按照我们正常思维,也为之后方便,把数据按日期排序,然后重设索引。

saldf=saldf.sort_values('销售时间')

saldf=saldf.reset_index(drop=True) #注意与reindex的区别

然后,看下数据清洗的咋样了,有无异常值:

saldf.describe()

数量和金额有负数,这不可能的事情,去掉。

saldf=saldf.loc[saldf['应收金额']>0]

到这里,数据清洗基本就完成了,接下来构建模型。

四、构建模型

首先对于指标一:月均消费次数。我们可以知道它等于:总消费次数/月份数。可见数据分析师也是要懂业务的。

首先求月份数,最后一天减去第一天。这里我用的numpy的timedelta,代码上和原案例的写法会有稍许差距。

daysi=(saldf['销售时间'].values[-1]-saldf['销售时间'].values[0])

daynum=daysi.astype('timedelta64[M]').astype('float')

然后取社保卡和日期唯一值个数除以月份数daynum。

saldf.drop_duplicates(subset=['销售时间','社保卡号']).shape[0]/daynum

得出为:890.8333。因月份数的求法和原案例不同所以有细微差别。依次求出其他指标:

月均消费额=总消费金额/月份数:

saldf['实收金额'].sum()/daynum #月均消费金额

为50672.4949。

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

saldf['实收金额'].sum()/saldf.drop_duplicates(subset=['销售时间','社保卡号']).shape[0]

为56.8821。

最后,我们画出消费趋势图。

导入包

import matplotlib.pyplot as plt

%matplotlib inline

from pylab import *

mpl.rcParams['font.sans-serif'] = ['SimHei'] #中文显示

plt.rcParams['axes.unicode_minus']=False #坐标轴负号的显示

首先把数据按时间聚合,聚合方式为求和。

saldfgroud=saldf.groupby('销售时间').sum()

然后画图

saldfgroud.plot()

发现这图片完全没法看,变化太剧烈了。同时销售数量的值太小了。

为此,我们首先进行移动平均重采样,把趋势显现出来。然后把销售数量放到右边次坐标轴。

saldfgroud.rolling(window=10).mean().plot(figsize=(10,5),secondary_y=['销售数量'])

好了,这样趋势就出来了。可见有几个月的销售情况十分突出。有兴趣的可以深入解读。

python医学数据分析_数据分析也有基本法:医疗数据案例(python)相关推荐

  1. python医学应用_数据分析工具鄙视链:Python、R语言是老大,Excel只能称小弟?

    最新行业报告 2020数据分析.商业分析行业报告工作岗位与职能.薪资对比.热招公司等多方面详细解读帮助你一网打尽,斩获心仪Offer! 扫码回复[数据分析 0]立即领取 History语言发展史ABC ...

  2. python oop 继承_关于oop:使类数据在python中可继承的正确方法是什么?

    我是Python的新手,来自Perl领域. 我正在尝试确定关于类数据的存储和访问的最佳实践,以便它可以被子类继承并可能进行扩展.阅读Python 2.7文档(我确实使用2.6),深入研究Python和 ...

  3. 爬table数据_爬取NBA球员薪资数据【Python数据分析百例连载】

    通过Pandas模块也可以实现简单的爬虫.主要使用Pandas的read_html方法,该方法用于导入带有table标签的网页表格数据,语法如下: pandas.read_html(io,match= ...

  4. python钻石数据分析_数据分析该用什么工具?

    数据分析的软件很多,完整的数据分析一般分为数据收集.处理.分析和展现四个步骤.下面分别介绍一下过程中每个步骤使用到的工具. Excel 微软办公套装软件的一个重要的组成部分,它包含数据的基本处理,函数 ...

  5. python常用包数据分析_数据分析领域常用的五个Python包

    Numpy Numpy提供了两种基本的对象:ndarray和ufunc.ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数.Numpy的功能: N维数组,一种快速.高效 ...

  6. python进阶数据分析_数据分析--Part 2: Python进阶

    笔记内容来源:拉勾教育数据分析实战训练营 本篇是Part 2,python的进阶部分开始啦~~~~~~~ 说明:理论部分是提炼的老师所讲,加上我自己看书添加的一些解释,代码部分有些会融合老师和我自己练 ...

  7. excel用python数据分析_(转载)像Excel一样使用python进行数据分析

    Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...

  8. 初创公司怎么做销售数据分析_初创公司与Faang公司的数据科学

    初创公司怎么做销售数据分析 介绍 (Introduction) In an increasingly technological world, data scientist and analyst r ...

  9. python接口 同花顺_这是真的么 | 学会了用Python预测股票价格

    文章来源于微信公众号:机器学习与python实战 原文链接:请点击 文章仅用于学习交流,如有侵权请联系删除 作为一种技术手段,预测在金融.证券领域的应用非常广泛,尤其是对股票价格的预测.我们介绍一下获 ...

  10. 大学开设python课程吗_在大学为什么你一定要学会Python?

    之前,网上流传一组<人工智能实验教材>的图片,照片火起来的原因是教材是为幼儿园的小朋友们设计的! Python被列入小学.初高中教材已不是新鲜事,现在又成功"入侵"了幼 ...

最新文章

  1. Java生成html为pdf
  2. 官方wdpc安装文档,推荐RPM包安装
  3. TaskTracker获取并执行map或reduce任务的过程(一)
  4. 【Qt】窗口组件和窗口类型
  5. sharepoint2013以其他用户身份登录
  6. android UI布局
  7. JavaScript 循环
  8. Python之socket(套接字)
  9. 原创engine中地块的自动编号函数
  10. Swiper – 经典的移动触摸滑块插件【免费】
  11. linux下c爬取天气的源码,一个在conky中实现获取本地天气的c源代码
  12. 【玩转CSS】学成在线(文末素材源码自取)
  13. 中国移动开发者大会PPT集萃(一):核心技术与应用开发实践
  14. 国家级非遗传承人高清旺《四大美人》皮影数字藏品惊艳亮相!
  15. Polish calculation
  16. 【ibokan】好的用户界面-界面设计的一些技巧
  17. 机器学习:PR曲线及F1 score
  18. 北京54坐标系和西安80坐标系转WGS84坐标系
  19. Jetson Xavier NX小坑——配置cuDNN
  20. OpenCV是什么?

热门文章

  1. sql uniqueidentifier转换成varchar 数据类型
  2. TCP/IP完整的一套基础介绍
  3. 解决PostgreSQL强制类型转换,pg数据库转换数字时存在字符串报错,pgSQL字符串强转报错 的一种终极解决方法
  4. 【番杰的问答笔记】输入英文句子,统计其中的单词个数
  5. Activity生命周期学习总结
  6. SplunkEnterprise日志服务程序/SplunkForward通用转发器部署客户端
  7. 对标剑桥、斯坦福!西湖大学城来了!
  8. mysql timestamp 更新操作_MySQL timestamp自动更新时间
  9. js promise then 用法详解
  10. 编程题实训-实验2-基于栈的算术表达式求值算法(北京林业大学)