python医学数据分析_数据分析也有基本法:医疗数据案例(python)
本文案例取自猴子社群药店销售数据分析案例,因个人习惯。和原案例代码有所不同,但终究殊途同归,希望能给初学者以思考。此外,本文增加了可视化部分。
数据分析步骤可分为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)相关推荐
- python医学应用_数据分析工具鄙视链:Python、R语言是老大,Excel只能称小弟?
最新行业报告 2020数据分析.商业分析行业报告工作岗位与职能.薪资对比.热招公司等多方面详细解读帮助你一网打尽,斩获心仪Offer! 扫码回复[数据分析 0]立即领取 History语言发展史ABC ...
- python oop 继承_关于oop:使类数据在python中可继承的正确方法是什么?
我是Python的新手,来自Perl领域. 我正在尝试确定关于类数据的存储和访问的最佳实践,以便它可以被子类继承并可能进行扩展.阅读Python 2.7文档(我确实使用2.6),深入研究Python和 ...
- 爬table数据_爬取NBA球员薪资数据【Python数据分析百例连载】
通过Pandas模块也可以实现简单的爬虫.主要使用Pandas的read_html方法,该方法用于导入带有table标签的网页表格数据,语法如下: pandas.read_html(io,match= ...
- python钻石数据分析_数据分析该用什么工具?
数据分析的软件很多,完整的数据分析一般分为数据收集.处理.分析和展现四个步骤.下面分别介绍一下过程中每个步骤使用到的工具. Excel 微软办公套装软件的一个重要的组成部分,它包含数据的基本处理,函数 ...
- python常用包数据分析_数据分析领域常用的五个Python包
Numpy Numpy提供了两种基本的对象:ndarray和ufunc.ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数.Numpy的功能: N维数组,一种快速.高效 ...
- python进阶数据分析_数据分析--Part 2: Python进阶
笔记内容来源:拉勾教育数据分析实战训练营 本篇是Part 2,python的进阶部分开始啦~~~~~~~ 说明:理论部分是提炼的老师所讲,加上我自己看书添加的一些解释,代码部分有些会融合老师和我自己练 ...
- excel用python数据分析_(转载)像Excel一样使用python进行数据分析
Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...
- 初创公司怎么做销售数据分析_初创公司与Faang公司的数据科学
初创公司怎么做销售数据分析 介绍 (Introduction) In an increasingly technological world, data scientist and analyst r ...
- python接口 同花顺_这是真的么 | 学会了用Python预测股票价格
文章来源于微信公众号:机器学习与python实战 原文链接:请点击 文章仅用于学习交流,如有侵权请联系删除 作为一种技术手段,预测在金融.证券领域的应用非常广泛,尤其是对股票价格的预测.我们介绍一下获 ...
- 大学开设python课程吗_在大学为什么你一定要学会Python?
之前,网上流传一组<人工智能实验教材>的图片,照片火起来的原因是教材是为幼儿园的小朋友们设计的! Python被列入小学.初高中教材已不是新鲜事,现在又成功"入侵"了幼 ...
最新文章
- Java生成html为pdf
- 官方wdpc安装文档,推荐RPM包安装
- TaskTracker获取并执行map或reduce任务的过程(一)
- 【Qt】窗口组件和窗口类型
- sharepoint2013以其他用户身份登录
- android UI布局
- JavaScript 循环
- Python之socket(套接字)
- 原创engine中地块的自动编号函数
- Swiper – 经典的移动触摸滑块插件【免费】
- linux下c爬取天气的源码,一个在conky中实现获取本地天气的c源代码
- 【玩转CSS】学成在线(文末素材源码自取)
- 中国移动开发者大会PPT集萃(一):核心技术与应用开发实践
- 国家级非遗传承人高清旺《四大美人》皮影数字藏品惊艳亮相!
- Polish calculation
- 【ibokan】好的用户界面-界面设计的一些技巧
- 机器学习:PR曲线及F1 score
- 北京54坐标系和西安80坐标系转WGS84坐标系
- Jetson Xavier NX小坑——配置cuDNN
- OpenCV是什么?
热门文章
- sql uniqueidentifier转换成varchar 数据类型
- TCP/IP完整的一套基础介绍
- 解决PostgreSQL强制类型转换,pg数据库转换数字时存在字符串报错,pgSQL字符串强转报错 的一种终极解决方法
- 【番杰的问答笔记】输入英文句子,统计其中的单词个数
- Activity生命周期学习总结
- SplunkEnterprise日志服务程序/SplunkForward通用转发器部署客户端
- 对标剑桥、斯坦福!西湖大学城来了!
- mysql timestamp 更新操作_MySQL timestamp自动更新时间
- js promise then 用法详解
- 编程题实训-实验2-基于栈的算术表达式求值算法(北京林业大学)