一 项目介绍

1.项目背景介绍

大数据的不断发展影响消费者生活的各个方面,也对企业的营销模式提出挑站对大数据量化分析,分析数据中的相关性分析,单因素分析等技术对消费者相关数据进行分析,能够挖掘出对企业真正有意义的信息。这就要求企业在有现的人力、物力资源下,更新并找出合理的销售方案。
对于医药企业来说,大数据为企业带来了危机也带来了商机,企业应根据自身发展阶段及药品特征,以及顾客价值最大化作为方向,以信息化为手段,并根据市场对药品需求的变化,把握消费者的个性需求,进行精准营销,与消费者建立起良性有效的互动,及时获得消费者反馈,整合传统媒体与新媒体宣传资源,选择合适的企业发展的营销战略。
随着经济的不断发展,人民生活水平文化水平的不断提升,药品超市和药房如雨后春笋般勃勃而生,很多市民都会自行购买一些常用于家庭健康的需求。药品知识由于其专业性很强 因此进行药品数据分析对医药销售起着非常重要的作用。

2.项目的目的和意义

目的:分析药品销售数据, 分析销售数据并根据历史数据预测未来的销售.
意义:便于医院提前储备未来的药品数量.

3.项目所需数据介绍

数据集网盘链接:https://pan.baidu.com/s/1oBipkEZkd4F0x1ZdZISY0g

提取码:4679
此次数据分析的数据是根据药品的销售数据,共有1461行13列数据。数据中主要包含日期, 复方胃蛋白酶颗粒, 胃肠宁片,强力VC银翘片, 腰腿痛丸,氨加黄敏胶囊,醒脑降压丸, 脑络通胶囊, 阿司匹林,年,月,小时,星期十三个基本单位。

4.项目所用算法介绍

时间序列算法
时间序列中常用预测技术 一个时间序列是一组对于某一变量连续时间点或连续时段上的观测值。

(1)移动平均法 (MA)

1.1. 简单移动平均法
设有一时间序列y1,y2,…, 则按数据点的顺序逐点推移求出N个数的平均数,即可得到一次移动平均数.
1.2 趋势移动平均法
当时间序列没有明显的趋势变动时,使用一次移动平均就能够准确地反映实际情况,直接用第t周期的一次移动平均数就可预测第1t+周期之值。
时间序列出现线性变动趋势时,用一次移动平均数来预测就会出现滞后偏差。修正的方法是在一次移动平均的基础上再做二次移动平均,利用移动平均滞后偏差的规律找出曲线的发展方向和发展趋势,然后才建立直线趋势的预测模型。故称为趋势移动平均法。

(2) 自回归模型(AR)

AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点).
本质类似于插值,其目的都是为了增加有效数据,只是AR模型是由N点递推,而插值是由两点(或少数几点)去推导多点,所以AR模型要比插值方法效果更好。

(3)自回归滑动平均模型(ARMA)

其建模思想可概括为:逐渐增加模型的阶数,拟合较高阶模型,直到再增加模型的阶数而剩余残差方差不再显著减小为止。

二项目制作过程

1.项目功能介绍

本案例的分析目标是从销售数据中分析以下几项:
(1)运用滑动平均法展示某种药品2018年~2020年情况
(2)运用时间序列预测某种药品在2022年整年的销售情况
(3)分析出某种药品在某一时间段销售情况
(4)运用不同的回归模型预测药品在2022年整年的销售情况

2.主要代码实现和解释说明

1.导入所需要的库

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import re
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
from statsmodels.tsa.arima_model import ARMA
import statsmodels.tsa.stattools as st
from statsmodels.graphics.api import qqplot
from statsmodels.stats.stattools import durbin_watson
# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False

2.查看数据的缺失值和重复值并预览数据

data = pd.read_csv("C:\\Users\\山渐青\\Desktop\\数据分析实训\\drug_1.csv",engine='python')
# 缺失值
print(data.isnull().sum())
# 重复值
print(data.duplicated().sum())
data

3.统计其中某一药品的销售数据随时间变化趋势

orig = pd.Series(data.胃肠宁片.tolist(),\index = pd.to_datetime(data.日期.tolist()))
orig.plot(style='k.',figsize=(16,8),rot=30)
# 散点图输出
orig=orig.resample('M').sum()
orig.plot(color = 'blue',figsize=(16,8))
# 折现图输出

4.统计数据

# 最常售出药物(胃肠宁片)的时间是星期几
df_1 = data[['胃肠宁片', '星期']]
result = df_1.groupby(['星期'], as_index=False).sum().sort_values('胃肠宁片', ascending=False)
resultDay = result.iloc[0,0]
resultValue = round(result.iloc[0,1], 2)
print('药品胃肠宁片通常销售时间在' + str(resultDay))
print('销售金额为' + str(resultValue))
df = pd.read_csv("C:\\Users\\山渐青\\Desktop\\数据分析实训\\drug_1.csv",engine='python')
# 那种药物在2019年的星期一最为频繁销售
df = df.loc[df['日期'].str.contains('2019', flags=re.I, regex=True) & (df['星期'] == '星期一')]
df = df.groupby(['星期'], as_index=False).sum()
df = df[['复方胃蛋白酶颗粒', '胃肠宁片', '强力VC银翘片', '腰腿痛丸', '氨加黄敏胶囊', '醒脑降压丸', '脑络通胶囊', '阿司匹林']]
result = df.sort_values(by=0, ascending=False, axis=1)
for field in result.columns.values[0:1]:print('2019年星期一最为受欢迎的药品是' + str(field))print('销售金额为' + str(round(result[field].iloc[0], 2)))

5.开始预测

# 设置训练集
train_x = orig['1/2/2018':'12/31/2021']
# 采用滑动平均法
smt = train_x.rolling(window=12)
plt.figure(figsize=(24,8))
plt.plot(train_x,color='blue',label='原始数据')
plt.plot(smt.mean(),color='red',label='滑动平均')
# 查看2018年到2021年的滑动平均值
plt.legend()

def plot_diff(series,n):# 4阶差分预览color_bar = ['blue','red','purple','pink']diff_x = seriesfor i in range(n):plt.figure(figsize=(24,8))plt.title('diff'+str(i+1))diff_x=diff_x.diff(1)diff_x.plot(color=color_bar[i%len(color_bar)])
plot_diff(train_x,4)
# 自相关系数与偏自相关系数
fig=plt.figure(figsize=(16,8))
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
# ACF
fig = plot_acf(train_x,lags=20,alpha=0.05,ax=ax1)
# PACF
fig = plot_pacf(train_x,lags=20,alpha=0.05,ax=ax2)
# 绘制AIC热力图
ax = sns.heatmap(res['aic'],annot=True,fmt=".2f",cmap="rainbow")
ax.set_title("AIC")
res.aic_min_order
# 绘制BIC热力图
ax = sns.heatmap(res['aic'],annot=True,fmt=".2f",cmap="rainbow")
ax.set_title("BIC")
res.bic_min_order
model = ARMA(train_x,order=(3,2)).fit()
resid = model.resid
plt.figure(figsize=(12,12))
qqplot(resid,line='q',fit=True)
# D-W检验
plt.title('DW:{}'.format(durbin_watson(resid.values)))
# 预测
pred = model.predict(start=0,end=len(train_x)+11)
# 查看拟合结果
plt.figure(figsize=(24,8))
plt.plot(orig,color='blue',label='原始数据')
plt.plot(pred,color='red',linestyle='-.',label="预测")
plt.legend(prop={'size':16})
plt.axvline(x=pd.to_datetime('12/31/2021'),ls='--',c='green')
plt.show()

三项目结果分析

本次课设我主要是通过对医院2018~2021年药品销售数据进行分析并预测2022年药品销售情况,分析目标是从销售数据中分析以下几项:
(1)运用滑动平均法展示某种药品2018年~2021年情况
(2)运用时间序列预测某种药品在2022年整年的销售情况
(3)分析出某种药品在某一时间段销售情况
(4)运用不同的回归模型预测药品在2022年整年的销售情况
实验不足:
(1) 在实验中,没有运用到数据预处理的方法,比如缺失值,重复值和异常值的处理.
(2) 仅仅预测了平稳型时间序列,没有对非平稳型时间序列进行预测.

四总结和展望

总体体会:课程设计时对我这一学期以来学习成果的良好检验,在所有课题中,我选择了药品销售分析的数据分析项目。在这两周的课程设计中,我碰到了许多的困难,也有很多不懂的语句,在网络中找了很多相关资料来完善自己的课设内容,总的来说,在这次课程设计中,我对数据分析有了更深刻的认识,加强了我对数据分析的了解。
课程设计作为一门专业课,给我很多专业知识以及专业技能上的提升,课程设计让我感触很深,它让我对抽象的理论有了具体的认识。
我认为,在这两周的课程设计中,不仅培养了我独立思考,动手操作的能力,在各种其他能力上也有了提高。更重要的是,在课程设计中,我们学会了很多的方法。而这是日后最实用的。我们要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的东西。
从理论到实践,在这段日子里,我学到了很多很多的东西,同时不仅可以巩固了以前学过的知识,而且学到了很多在书本上从来没有学到过的知识。

[python]---药品数据分析及预测(包括数据集,源码,报告)相关推荐

  1. RCNN学习笔记——第三篇: 实现FRCNN网络训练、评价与预测(附全部源码)

    RCNN学习笔记--第三篇: 实现FRCNN网络训练.评价与预测(附全部源码) 本文是个人根据B站大佬Bubbliiiing的FRCNN系列视频同步完成FRCNN训练,记录心得和遇见的问题. 关于RC ...

  2. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  3. 熬夜整理出了70个清华大佬都在用的Python经典练手项目【附源码】

    我们都知道,不管学习那门语言最终都要做出实际的东西来,而对于编程而言,这个实际的东西当然就是项目啦,不用我多说大家都知道学编程语言做项目的重要性. 于是,小编熬了几个通宵,终于整理出了70个清华大佬都 ...

  4. 基于Python Unet的医学影像分割系统源码,含皮肤病的数据及皮肤病分割的模型,用户输入图像,模型可以自动分割去皮肤病的区域

    手把手教你用Unet做医学图像分割 我们用Unet来做医学图像分割.我们将会以皮肤病的数据作为示范,训练一个皮肤病分割的模型出来,用户输入图像,模型可以自动分割去皮肤病的区域和正常的区域.废话不多说, ...

  5. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

  6. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  7. 计算机毕业设计Python+django 宠物领养中心小程序(源码+系统+mysql数据库+Lw文档)

    项目介绍 据世界动物保护协会统计,全世界大概有5亿只流浪狗和散养的狗和大致同样数量的流浪猫,而这些主要源于主人的弃养.同时,在很多地区,狗和猫都处于散养状态,这部分的动物,也经常会变成流浪动物.猫和狗 ...

  8. python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...

    Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码)/Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码 ...

  9. 用python画皇冠_【推荐】手把手教你如何用Python画一棵漂亮樱花树含源码

    最近给大家整理了一下,挑了一些我觉得不错的代码分享给大家手把手教你如何用Python画一棵漂亮樱花树含源码. 动态生成樱花 效果图(这个是动态的): import turtle as T import ...

  10. Python贪吃蛇小游戏_完整源码免费分享

    文章目录 Python 贪吃蛇小游戏 1. 导包 2. 配置初始化参数 3. 主函数及运行主体 4. 画食物的函数 5. 画贪吃蛇的函数 6. 画网格的函数(非必选,觉得多余的可以忽略此项) 7. 操 ...

最新文章

  1. 代码的印象派:写点好代码吧
  2. linux命令:sed工具替换文件内容
  3. 根据录入的计算公式计算_小规模纳税人增值税计算公式是什么,什么人能被称为小规模纳税人?- 理财技巧...
  4. arch 安装准备--包管理的使用pacman
  5. git修改文件名大小写的方法。
  6. 使用 Win 7 必须知道的快捷键
  7. 旧的非flash版Metalink的入口
  8. NFC技术:Android中的NFC技术
  9. h5网站模板_超全超实用的80个模板网站,我全部整理在这里了
  10. 支付 VS 清算 VS 结算
  11. 集合工具类 以及 几个小面试题(是我保存的)
  12. 安徽大学计算机学院张兴义教授,“2018年CCF合肥为新研究生导航” 开启复合型人才培养之路...
  13. PHP环境配置和验证
  14. EPLAN的USB加密狗驱动程序将于2023年5月23日停止维护更新?
  15. 为docker ps命令添加服务名称
  16. 【C++】小而快的Ninja
  17. 软件測试系列之入门篇(一)
  18. 光猫、路由器和交换机区别
  19. lingo输出解的解释
  20. [翻译工程][英译中]枫决9 MapleKombat IX

热门文章

  1. html svg 线条动画,SVG 线条动画入门
  2. 韦恩州立大学计算机科学,2019上海软科世界一流学科排名计算机科学与工程专业排名韦恩州立大学排名第301-400...
  3. ARM裸机开发篇1:Cortex-A7开发环境搭建
  4. matlab产生窄带信号,窄带信号
  5. outlook邮箱如何群发邮件?outlook群发邮件如何相互之间看不到?
  6. 连接服务器显示句柄无效,句柄无效。 (从HRESULT异常:0x80070006(E_HANDLE))
  7. ImageView显示图片控件介绍
  8. Specification for the Lab VIEW Measurement File
  9. Python使用-错误“name ‘requests‘ is not defined”的探查
  10. 超混沌Lorenz系统图像加密(MATLAB)