python数据分析项目报告(python数据分析项目案例)

http://www.itjxue.com  2023-03-27 09:58  来源:未知  点击次数: 

撰写数据分析报告6个步骤

撰写数据分析报告6个步骤

撰写数据分析报告6个步骤。在职场上,有的岗位是需要撰写数据分析报告的,想要写好数据分析报告就要知道写它的步骤。接下来就由我带大家了解下撰写数据分析报告6个步骤的相关内容。

撰写数据分析报告6个步骤1

1、明确目标

在「 明确数据分析目标的 3 个步骤 」这篇文章中,我们说过,要正确地定义问题、合理地分解问题、抓住关键的问题。

当明确目标之后,我们需要梳理分析思路,搭建分析框架,开始思考以下问题:

采用哪些分析指标?

运用哪些分析思维?

使用哪些分析工具?

明确目标,是确保数据分析过程有效进行的先决条件,可以为后续的步骤提供清晰的方向。

2、收集数据

收集数据是围绕数据分析目标,按照分析思路和框架,收集相关数据的过程,为后续的步骤提供素材和依据。

收集的数据包括原始数据和二手数据,其中原始数据包括公司内部的数据库、调查得到的数据等;二手数据包括统计局发布的数据、公开出版物中的数据等。

收集数据的基本要求是:真实性、及时性、同质性、完整性、经济性和针对性。

3、处理数据

处理数据,是从大量杂乱无章的原始数据中,抽取对解决问题有价值的数据,并进行加工整理,形成适合数据分析的样式,保证数据的一致性和有效性,这是数据分析之前必不可少的阶段。

数据的处理主要包括数据清洗、数据转化、数据抽取、数据合并、数据计算等过程,原始数据一般都需要经过一定的处理,才能用于后续的数据分析工作。

在处理数据的过程中,准确性尤为重要,如果数据本身存在错误,那么即使采用最先进的数据分析方法,得到的结果也是错误的,不具备任何参考价值,甚至还会误导决策。

具体处理数据的方法,可以参考以下文章:

4、分析数据

分析数据,是对客观真实的数据,运用恰当的方法和工具,进行科学有效的分析。

参考文章:

如何用 Python 分析数据?

5、展现数据

通过数据分析,隐藏在数据背后有价值的信息逐渐浮现出现,此时需要通过合适的方式展现出来,让人一目了然,提高信息传递的效率。

通常情况下,展现数据的方式通常是用图表说话,即数据可视化,常用的数据可视化图表有很多,可以参考:

数据可视化话题集锦

6、结论建议

一份好的数据分析报告,需要有明确的结论建议。

如果换位思考,站在决策者的角度,更想知道的是可行的解决方案。

如果数据分析报告没有明确的结论建议,那么也就失去了报告的灵魂。

所以,要想制作出更有价值的数据分析报告,不仅要掌握数据分析的思维和工具,而且还要熟悉业务,这样才能提出更好的建议。

小结

数据分析报告的制作过程,通常可以分解为明确目标、收集数据、处理数据、分析数据、展现数据、结论建议等 6 个步骤,这是对整个数据分析过程的总结,为决策者提供科学、严谨的决策依据,从而降低企业的经营风险,提高企业的核心竞争力。

如果把数据分析报告比作一个产品,制作报告的人就是产品经理,看报告的读者就是用户。

作为「产品经理」,同理心很重要,通过自我体验来理解他人,乔布斯能瞬间把自己变成傻瓜,这是同理心的一种表现。数据分析的思维和工具也很重要,它们是数据分析的基础。想象力是广袤的天空,但不是天马行空,而是基于同理心的推演,运用数据分析的思维和工具,让推演更加科学有效。

在一份数据分析报告的背后,有许多枯燥的、基础的准备工作要做,例如数据采集、数据仓库、数据治理等等。

如果没有高质量的数据作为坚实的地基,那么数据分析报告的高楼大厦是不稳固的。 如果没有明确数据分析的目标,那么后面的工作可能就是胡拼乱凑,用一堆图表堆砌的花架子,并不能解决实际的问题。

数据分析报告不要搞形式主义,而要有实质的内容,还要关注细节。

撰写数据分析报告6个步骤2

数据分析报告范文

项目数据分析报告是通过对项目数据全方位的科学分析来评估项目的可行性,为投资方决策项目提供科学、严谨的依据,降低项目投资的风险。

项目数据分析报告—项目市场化操作的科学依据:

政策背景:随着我国经济体制变革的不断深入发展,中国的决策高层已经完全意识到了项目分析的真正意义,这一佐证就是《国务院关于投资体制改革的决定》的出台。决定明确政府不再承担对投资项目的审核评估,实行备案制。而投资方和项目方,则对项目的风险承担完全责任,完全按照市场经济的模式来实施项目分析评估。这就正式宣告,中国的项目分析,将彻底进入市场化的运作模式。

时代需求:进入二十一世纪信息化时代,传统意义上的经济、管理和投资金融等学科和电子信息技术发生了不可分割的交融。作为先进生产力代表的电子信息技术,成为经济、管理和投资金融等领域创新变革的支撑和动力。“项目数据分析”以专业技术的身份出现在经济、管理和投资金融专业等领域,是信息化时代发展的必然结果。

项目数据分析报告—项目可行性判断的重要依据

任何欣欣向荣的企业,都是建立在所开发的优质项目基础上的。但如何才能确定项目的可行和优质呢?发达国家的做法是对项目的最终决策,一切以科学定量分析的项目数据为依据。在中国,随着世界经济一体化进程的加速和全球投资市场的蓬勃发展,加上中国投资分析行业正处于发展的起步阶段,投资人、企业管理层都迫切需要一个统一的、规范的标准来衡量投资项目的科学性和可行性,专业的项目数据分析报告在中国变得炙手可热。越来越多的投资人也选择项目数据分析报告为他们准备投资的项目做出科学、合理的分析,以便正确决策项目;越来越多的风险投资机构把项目数据分析报告作为其判断项目是否可行及是否值得投资的重要依据。

有关数据分析报告的详细样本,建议你到一些权威的数据分析机构去找找。。。

很多的,而且有非常多的数据分析模型和分析数据,还有案例

我给你介绍一个国内比较专业的数据分析机构

“开元研究”,希望你去了解一下。

透析审计领域的数据分析报告

一、目标定位

内容往往服务于目标,目标决定内容,因而数据分析报告的目标很大程度上决定其内容,我们应首先明确其目标定位。

构建数据分析报告的目标概念在外延上有所侧重,定位于为处于信息时代的审计服务。因此,它需要统一并且服务于审计这个大目标,但也具有自身的特点。根据《审计法》规定,我国国家审计的总目标是监督财政财务收支的真实性、合法性和效益性。在这个大前提下,我们认为构建计算机数据分析报告的总体目标是结合业务审计的具体目标,通过数据分析,实现价值最大化的审计决策,从而支撑制订的.审计实施方案。这个总体目标总是可以划分为具体层次上的目标。我们认为,从属于其总目标,构建数据分析报告的具体目标应可以描述为以下3个方面:

1、进行总体分析。从审计工作需求出发,对被审计对象的财务、业务数据进行总量分析,把握全局,形成对被审计对象财务、业务状况的总体印象。

2、确定审计重点,合理配置审计资源。在对被审计对象总体掌握的基础上,根据被审计对象特点,通过具体的趋势分析、对比分析等手段,合理的确定审计的重点,协助审计人员作为正确的审计决策,调整人力物力等资源达到最佳状态。

3、总结经验,建立模型。通过选取指标,针对不同的审计事项建立具体的分析模型,将主观的经验固化为客观的分析模型,从而指导以后审计实践中的数据分析。

以上3个具体目标的联系是紧密的,不是孤立的,只有在进行总体分析的基础上,才能进一步的确定审计重点,并在对重点内容的分析中得出结果,进而实现评价的过程。如果单单实现其中一个目标,最终得出的报告将是不完整的,对制订审计实施方案也没有可靠的支撑作用。

二、适用范围及对象

首先本文所论述的数据,是在信息化环境中审计人员开展审计时需处理的电子数据。为了明确分析对象的范围,我们制定了对于数据的三个限制条件:

①来源于信息系统中,包括财务、业务、管理等方面;

②能以数据库中二维表的形式存储于计算机中;

③有助于审计分析。基于这些限制条件,数据应包括财务数据、业务数据和补充数据(从被审计单位以外的地方采集与数据分析相关的数据)。我们可以根据需要分析其中一种或几种数据。

其次,数据分析报告所记录的对象是计算机审计中审前调查阶段所作的数据分析的过程及结果。在实际审计工作中,数据分析报告应在计算机审计审前调查阶段数据分析完成后撰写,为制订审计实施方案提供参考。

三、原则

我们认为,编制数据分析报告总体上应当遵循以下原则:

1、规范性原则。

数据分析报告中所使用的名词术语一定要规范,标准统一,前后一致,基本上要与前人所提出的相一致,例如对商业银行的盈利能力进行分析时采用了“税收比率”这个已存在的指标,就不能自己重命名为“税收收入比”等其他名称。

2、重要性原则。

数据分析报告一定要体现审计的重点,例如在真实性、合法性审计中,就应该重点选取真实性、合法性指标,构建相关模型,从数据上进行分析。并且反映在分析结果中对同一类问题的描述中,也要按照问题的重要性来排序。

3、谨慎性原则。

数据分析报告的编制过程一定要谨慎,体现在基础数据须要真实完整,分析过程须要科学合理全面,分析结果可靠,建议内容实事求是。

4、鼓励创新原则。

计算机审计技术是在不断发展进步的,必然有创新的方法或模型从实践中摸索总结出来,数据分析报告要将这些创新的想法记录下来,发扬光大。

总之,一份完整的数据分析报告,应当围绕目标,确定范围,遵循一定的前提和原则,系统的反映计算机数据分析的全貌,从而推动计算机审计事业的进一步发展。

如何写数据分析报告

相信很多数据分析师在写数据分析报告的时候也会遇到一些困惑,因为我最近也在写一个报告,在这里就梳理一下如何写数据分析报告

数据分析报告是数据分析师常见的工具,写好一份数据分析报告,不但能够清楚描述问题,洞察数据并且提出一些有思考的举措,也很能反映出一个数据分析师的思维和用数据讲故事的能力,网上虽然也有很多关于写好数据分析报告的文章,但是大部分都是偏重于理论,具体实践的很少,我就在这里做一个汇总,希望能帮助一些朋友,以期抛砖引玉

--------分割线--------正式开始--------

一份好的数据分析报告离不开两部分:数据部分和分析部分。巧妇难为无米之炊,数据之于数据分析师就好像食材之于巧妇,数据的重要性可见一斑,分析部分是数据分析师将数据做成报告的最重要一步,是最体现一个数据分析师功底的部分,也是拉开差距的部分,下面就针对两部分分别进行阐述

一. 数据部分

数据部分最重要的就是数据质量,数据质量的好坏直接决定一份数据分析报告的好坏,如果报告中某一个数据被质疑,会直接影响这份数据分析报告的可信度,本章说一说跟数据有关的一些内容

1.数据的质量

1.1数据类型

数据类型比较好理解,就是数据以什么样的类型存储的,不同的数据类型有不同的使用方法,因此在处理数据之前,必须要先了解数据类型,常见的数据类型有(这里只说一些常见的数据类型):

整数型

int :用于存储整数,存储从-2的31次方到2的31次方之间的所有正负整数,每个INT类型的数据按4 个字节存储

bigint :用于存储大整数,存储从-2的63次方到2的63次方之间的所有正负整数,每个BIGINT 类型的数据占用8个字节的存储空间

smallint :用于存储小整数,存储从-2的15次方到2的15次方之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间

浮点型

real :存储的数据可精确到第7 位小数,其范围为从-3.40E -38 到3.40E +38。 每个REAL类型的数据占用4 个字节的存储空间

float :存储的数据可精确到第15? 位小数,其范围为从-1.79E -308 到1.79E +308。 每个FLOAT 类型的数据占用8 个字节的存储空间。? FLOAT数据类型可写为FLOAT[ n ]的形式。n 指定FLOAT 数据的精度。n 为1到15 之间的整数值。当n 取1 到7? 时,实际上是定义了一个REAL 类型的数据,系统用4 个字节存储它;当n 取8 到15 时,系统认为其是FLOAT 类型,用8 个字节存储它

字符型

char : 数据类型的定义形式为CHAR[ (n) ],n 表示所有字符所占的存储空间,n? 的取值为1 到8000, 即可容纳8000 个ANSI 字符。若不指定n 值,则系统默认值为1。? 若输入数据的字符数小于n,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其超出部分

nchar : 它与CHAR 类型相似。不同的是NCHAR数据类型n 的取值为1 到4000。 因为NCHAR 类型采用UNICODE? 标准字符集(CharacterSet)。 UNICODE 标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE? 标准的数据类型多占用一倍的存储空间。使用UNICODE? 标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文、德文等,而不会出现编码冲突

varchar :VARCHAR数据类型的定义形式为VARCHAR? [ (n) ]。 它与CHAR 类型相似,n 的取值也为1 到8000,? 若输入的数据过长,将会截掉其超出部分。不同的是,VARCHAR数据类型具有变动长度的特性,因为VARCHAR数据类型的存储长度为实际数值长度,若输入数据的字符数小于n? ,则系统不会在其后添加空格来填满设定好的空间。一般情况下,由于CHAR 数据类型长度固定,因此它比VARCHAR 类型的处理速度快

时间和日期型

date :‘2018-01-17’

time :‘10:14:00’

timestamp :‘2018-01-17 10:14:00.45’

以上就是常用的数据类型,如果有其他的数据类型没有说到,可以去网上搜一下,都比较好理解

1.2噪音数据

因为网上有非常多的关于噪音数据的解释,都非常专业,我就不在这里做过多的详细解释了,我们只探讨从sql取出数据的时候有一些异常值的处理办法:

null

一般跑过sql的朋友肯定会发现,在跑出来的数据中会有null的情况,这个时候需要对null进行替换,如果是计算用,就把null替换成0,这个步骤可以在sql里面完成,也可以在excel里面完成

极大值

极大值会影响数据的计算结果,一般会进行处理,要么替换成除极大值以外的最大值,要么直接弃用

作为分母的0

如果0作为分母,在excel里会出现#DIV/0,这个时候可以直接把结果替换,或者在sql里面直接进行替换,用case……when……就可以替换

1.3数据的口径

数据的口径很重要,根据经验看,大部分的数据出现问题是口径造成的,数据的口径一定要跟业务的口径一致,拿留存率举例:

留存率是周期比率型指标,一般在计算留存率的时候需要确定 留存周期 和 活跃判定的口径

留存周期:留存周期通俗来讲就是指用户在多长时间范围内活跃,并在下一个周期内仍然活跃,这里的多长时间就是指留存周期

活跃判定:指怎么判定一个用户活跃,可以是启动App,可以是登陆,也可以是完成了一次其他特定行为,这个主要依照业务需求而定

实际计算:

周留存率的计算

分子:本周活跃 且 上周也活跃的用户数

分母:上周活跃的用户数

2.可能会用到的工具

在处理数据的过程中可以用很多工具,在这里就介绍一些比较常见的工具,大家耳熟能详,学起来也不是特变难

2.1提取数据

mysql

hivesql

两者的查询语句有相似的地方也有不同的地方,主要看自己所在公司的数据存储情况

2.2数据处理

python:一般写个脚本做一些机械的操作(我目前是这么用),也可以用来做计算

mysql:在查询的时候可以进行处理

excel:数据量比较小的时候,可以在excel上简单处理

2.3数据可视化

python:可以用来做一些词云图

Tableau:可视化一些图表,可以和sql结合着用

excel:做一些简单的图表,实际上数据处理的好的话,一般用excel就足够了

二. 分析部分

在处理了数据以后就要开始进行报告的撰写,写报告会涉及到几个部分的工作,这里分别进行介绍一下:

1.报告结构

一篇数据分析报告的结构是十分重要的,一个好的结构能够将他人带入到你的报告中,让他人更好的明白你的意图,减少信息传递之间的丢失,同时你的思维也主要展现在结构上,这就意味着在写数据分析报告前,一定好想清楚数据分析报告的结构,当然这里说的报告结构即包括整个报告的结构,也包括每一个章节的结构,这里就放到一起说了

1.1 总 - 分 - 总(多用在整体结构)

我们在读一本书的时候,打开目录,会发现整部书的结构一般包括:

前言

第一篇

第二篇

……

第n篇

结尾

这就是典型的总 - 分 - 总结构,是最常见的结构,如果是对一个专题进行分析,用这种形式是非常好的,举个例子:

某电商App近一个月内的销售额出现下滑,让你针对这个问题进行一次专题分析

分析思路:拿到这个问题,我们很容易想到的是,销售额出现下滑出现的原因有两个,一个是付费用户数减少了,另一个是付费用户的人均付费金额减少了,这两个原因属于并列的原因,不存在递进关系,也就是说付费用户数减少了与人均付费金额减少并不存在因果关系,没有什么相关性,因此需要对两个原因共同分析,最后输出结论和提升建议,分析完以后,会发现总

- 分 - 总结构很适合这样的分析,所以列出以下提纲

问题描述

销售额近一个月下降多少?绝对值,环比,同比数据

原因假设:付费用户数下降/人均付费金额下降

付费用户数下降分析

付费用户数降幅是多少?绝对值,环比,同比数据

定位下降人群:是整体下降还是某一群体用户数下降

这里就涉及到用户分群,用户分群的方法有很多,涉及到用户价值的分群常见的就是RFM模型,将分完群的用户进行数据对比,看看上个月付费用户的结构占比跟本月有什么不同,当然用户分群的方法也不止这一个,还有按照会员等级分群(主要用会员等级进行用户分群),按照活跃程度(新用户/留存用户/回流用户),按照消费习惯(一般用户表里面都会有用户的标签,标识这个用户的消费习惯,表示这个用户更喜欢购买哪一类的商品),不管用什么分群方法,都需要纵向对比,也就是这个月和上个月付费人群的对比

原因分析:

如果是付费用户整体下降(这种是大家都不想看到的现象,欣慰大盘数据的驱动需要投入大量的资源,也有可能是自然波动),考虑可能的原因主要有:用户整体流失,比如用户流失到竟对;或者本月有什么特殊情况,影响到了整体的用户活跃;或者是从活动维度去观察,是不是活动的力度减小,影响了用户付费的欲望

如果是某一个用户群体下降:考虑的原因可能有商品品类的影响,是不是某一类商品在平台没有上架,或者某一类商品涨价;或者这一类用户受到了哪些影响,一般可以从属性和行为角度去分析

提出策略:

针对分析出的原因提出可落地的策略(策略一定要落地,要具体,比如如果你提出一条策略是:提升新注册用户数,那么等于没说,老板多数会diss你,但是你如果说,通过减少注册时填写的非必要字段,如年龄/职业,来简化注册流程,挺升注册转化率,进而提升新注册用户数,那感觉是不一样的)

人均付费金额下降分析

人均付费金额的降幅是多少?绝对值,环比,同比数据

定位原因

人均付费金额下降可能的原因主要有:订单数量下降;每个订单包含的商品数的下降/某一个品类购买数下降

提出策略:针对分析出的原因提出可落地的策略

总结问题

明确造成销售额下降的原因到底是什么(定性以后,记得一定要量化,不量化会被diss)

提出有针对性的建议

如何预防再次发生

1.2 递进(可用于整体结构和章节内部结构)

这种结构适合对一个问题进行探索,就像上一个例子中,我们针对每一个可能原因进行分析的时候,就是采用的这种分析方法,这种分析结构特别适合对一个小问题进行深入的探索分析,层层递进,深挖原因,这里在举一个例子:

某一个App的新注册用户数环比上个月减少,需要你做一个深入的分析,找到原因,提供改进策略

分析思路:新注册用户数的的影响因素是一个典型的漏斗结构,也是一个典型的单向性用户旅程,画一张图就能说明白:

如图所示,影响注册用户数的原因全部标注在漏斗里面,但是注册全流程这个漏斗只能看个大概流失,所以我们会对某一步进行细化,这张图上,我们对用户从启动到注册成功进行细化,细化到用户行为,这样能够提出一些产品上的改进意见,这个时候,如果想要提升新注册用户数,只需要针对每一步流失原因进行分析,找到提升策略就可以了,基本上是所见即所得的分析

比如:我们想对提交注册信息到注册成功这一步进行优化,那么首先我们要找到用户注册失败的原因有什么,一般有:

用户已注册

密码格式不合规

系统错误

未勾选《隐私协议》

在提出建议的时候,只要针对以上原因提出具体改进意见就可以了

1.3并列结构(多用于整体结构)

这种结构一般遇到的情况不多,常见的有对不同的校区进行经营分析/对不同品类的商品进行售卖分析,基本都是以描述型分析为主,因为分析的主体是并列关系,所以只需要每个主体就行单独分析就好,基本采用的分析思路是一样的

1.4因果结构(多用于章节内部结构)

这种结构一般用在复盘分析报告中,复盘是常见的数据分析报告类型之一,也是很多公司比较重视的一个报告,比如双十一复盘/新手活动复盘等等, 以电商某一次大促复盘为例 ,这里直接写结构:

总体描述:

本次大促整体数据表现,整体活动节奏的介绍;销售额是多少,同比提升多少;利润情况;参与用户有多少,同比提升多少;卖出商品有多少,同比提升多少;各个子活动的贡献是多少

子活动1的效果分析

子活动1的简介,作用,发力点

子活动1的贡献是什么,对于直接提升结果指标或者间接提升指标有哪些贡献

子活动1的成本是什么?投入产出比是多少?

子活动2的效果分析

子活动x的效果分析

最后汇总,提出优化建议

2.分析方法

讲完了整体结构,我们就该进入到具体分析的过程里面,这里的分析方法,主要想说说怎么去针对不同的数据进行分析,也就是说怎么通过数据看出问题,这里介绍常用的5种分析方法,但是有一句话非常重要,想写这节的最前面: 数据分析师一定要懂业务,在分析之前最好能把问题定位个大概,再去捞数,再去分析,否则每天会沉浸在漫无目的取数中,我认为一个数据分析师最重要的能力是要懂业务,从数据的角度看业务,才能驱动业务

2.1 对比分析

横向对比

横向对比就是把一个指标按照不同维度拆分,去对比不同维度的变化,举个简单的例子来说就是:

昨天的DAU增长了30%,那么把DAU进行拆分,可以拆分成以下三种方式:

DAU=新注册用户数+留存用户数+回流用户数

DAU=北京活跃用户数+河北活跃用户数+山东活跃用户数+……

DAU=北京活跃用户数+河北的活跃用户数+……

? ? ? ? ? ? ? ? =北京的新增用户数+北京的留存用户数+北京的回流用户数+河北的新增用户数+河北的留存用户数+河北的回流用户数+……

这里留一个疑问,怎么去选择优先下钻的维度?想明白以后分析的效率就会有很大提升

纵向对比

在进行完横向对比以后,就要开始进行纵向对比,纵向对比主要是在时间维度上,还拿上一个例子来说,我们按照第一种方式进行横向对比以后,就要纵向对比,见下表:

2.2分布分析

分布分析一般是应用的场景比如用累计消费金额去分组/按照用户一个月活跃天数去分组,这些场景都有两个共性的特征:

属性值都是数值类型,或者日期类型

属性值非常多,比如累计消费金额可能从1-90000中间任意一个数字,也就是属性值非常多,没办法用每一个属性值去单独分析,因此需要分组

还是上图说明:

2.3交叉分析

交叉分析一般指多维度交叉,或者不同指标之间的交叉

多维度交叉其实有点类似对比分析的第三类分类方法,这里不在赘述了,还是那个图,但是在实际分析中的作用其实很是强大,具体如何应用就需要大家举一反三啦,仔细看看这张图,可以换成哪些分析场景下的哪些场景的交叉分析:

不同指标交叉一般用在分析变化趋势中,或者寻找相关因素的时候,上图:

这样既能看绝对值的变化,又能一目了然的看出变化趋势,如果不同指标之间呈现一定的相关性,那就是相当完美了

2.4漏斗分析

漏斗分析模型比较好理解了,一般在行为分析中常用到,直接上图吧:

是不是有点眼熟?漏斗分析一般分析应用在分析用户使用某项业务时,经过一系列步骤转化的效果,因为用户会沿着产品设计的路径到达最终目标事件,在分析每一步转化的时候会用到这个模型

2.5矩阵分析

矩阵分析是一个不错的分析模型,主要用在分类上面,常见的有用户分类、产品分类等,比如像常见的RFM模型是一个三维矩阵,有八个象限,上两个图看看:

矩阵分析其实不难理解,但是涉及到一个比较关键的问题,就是临界点怎么选择,通俗来说就是第一象限和第二象限的临界值是多少,有的是0,有的不是0,举个例子:

我想用活跃度和累计消费金额对1万个用户进行分群,使用矩阵分析

我建好了这个二维矩阵,我第一件事就是先要确定原点的坐标值,也就是说用户的累计消费金额大于x,就会出现在第一/四象限,如果小于x,就会出现在第二/三象限,想确定这个值需要一定的方法,会用到一些分类算法,这个可以去网上查一些关于分类的教程,有很多,后续我会写一盘文章来介绍分类,这里就不细讲了

以上就是数据分析最重要的两个模块,当然在实际操作中还有很多需要思考的地方,太细节的东西不太能够面面俱到,这里留给大家去思考的空间,比如:

数据分析报告怎么讲成一个故事,比如背景-现状-原因-策略-预期结果-复盘结果?

每一页PPT怎么排版会让你的数据分析报告可读性更高?

如果你的数据分析报告不采用上述的结构,还能用哪些结构?

怎么让你的数据分析报告显得更高大上?

可以留言交流哦

可以让你快速用Python进行数据分析的10个小技巧

一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。

一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,这里有一些小提示和小技巧,有些可能是新的,但我相信在下一个数据分析项目中会让你非常方便。

Pandas中数据框数据的Profiling过程

Profiling(分析器)是一个帮助我们理解数据的过程,而Pandas Profiling是一个Python包,它可以简单快速地对Pandas 的数据框数据进行 探索 性数据分析。

Pandas中df.describe()和df.info()函数可以实现EDA过程第一步。但是,它们只提供了对数据非常基本的概述,对于大型数据集没有太大帮助。 而Pandas中的Profiling功能简单通过一行代码就能显示大量信息,且在交互式HTML报告中也是如此。

对于给定的数据集,Pandas中的profiling包计算了以下统计信息:

由Pandas Profiling包计算出的统计信息包括直方图、众数、相关系数、分位数、描述统计量、其他信息——类型、单一变量值、缺失值等。

安装

用pip安装或者用conda安装

pip install pandas-profiling

conda install -c anaconda pandas-profiling

用法

下面代码是用很久以前的泰坦尼克数据集来演示多功能Python分析器的结果。

#importing the necessary packages

import pandas as pd

import pandas_profiling

df = pd.read_csv('titanic/train.csv')

pandas_profiling.ProfileReport(df)

一行代码就能实现在Jupyter Notebook中显示完整的数据分析报告,该报告非常详细,且包含了必要的图表信息。

还可以使用以下代码将报告导出到交互式HTML文件中。

profile = pandas_profiling.ProfileReport(df)

profile.to_file(outputfile="Titanic data profiling.html")

Pandas实现交互式作图

Pandas有一个内置的.plot()函数作为DataFrame类的一部分。但是,使用此功能呈现的可视化不是交互式的,这使得它没那么吸引人。同样,使用pandas.DataFrame.plot()函数绘制图表也不能实现交互。 如果我们需要在不对代码进行重大修改的情况下用Pandas绘制交互式图表怎么办呢?这个时候就可以用Cufflinks库来实现。

Cufflinks库可以将有强大功能的plotly和拥有灵活性的pandas结合在一起,非常便于绘图。下面就来看在pandas中如何安装和使用Cufflinks库。

安装

pip install plotly

# Plotly is a pre-requisite before installing cufflinks

pip install cufflinks

用法

#importing Pandas

import pandas as pd

#importing plotly and cufflinks in offline mode

import cufflinks as cf

import plotly.offline

cf.go_offline()

cf.set_config_file(offline=False, world_readable=True)

是时候展示泰坦尼克号数据集的魔力了。

df.iplot()

df.iplot() vs df.plot()

右侧的可视化显示了静态图表,而左侧图表是交互式的,更详细,并且所有这些在语法上都没有任何重大更改。

Magic命令

Magic命令是Jupyter notebook中的一组便捷功能,旨在解决标准数据分析中的一些常见问题。使用命令%lsmagic可以看到所有的可用命令。

所有可用的Magic命令列表

Magic命令有两种:行magic命令(line magics),以单个%字符为前缀,在单行输入操作;单元magic命令(cell magics),以双%%字符为前缀,可以在多行输入操作。如果设置为1,则不用键入%即可调用Magic函数。

接下来看一些在常见数据分析任务中可能用到的命令:

% pastebin

%pastebin将代码上传到Pastebin并返回url。Pastebin是一个在线内容托管服务,可以存储纯文本,如源代码片段,然后通过url可以与其他人共享。事实上,Github gist也类似于pastebin,只是有版本控制。

在file.py文件中写一个包含以下内容的python脚本,并试着运行看看结果。

#file.py

def foo(x):

return x

在Jupyter Notebook中使用%pastebin生成一个pastebin url。

%matplotlib notebook

函数用于在Jupyter notebook中呈现静态matplotlib图。用notebook替换inline,可以轻松获得可缩放和可调整大小的绘图。但记得这个函数要在导入matplotlib库之前调用。

%run

用%run函数在notebook中运行一个python脚本试试。

%run file.py

%%writefile

%% writefile是将单元格内容写入文件中。以下代码将脚本写入名为foo.py的文件并保存在当前目录中。

%%latex

%%latex函数将单元格内容以LaTeX形式呈现。此函数对于在单元格中编写数学公式和方程很有用。

查找并解决错误

交互式调试器也是一个神奇的功能,我把它单独定义了一类。如果在运行代码单元时出现异常,请在新行中键入%debug并运行它。 这将打开一个交互式调试环境,它能直接定位到发生异常的位置。还可以检查程序中分配的变量值,并在此处执行操作。退出调试器单击q即可。

Printing也有小技巧

如果您想生成美观的数据结构,pprint是首选。它在打印字典数据或JSON数据时特别有用。接下来看一个使用print和pprint来显示输出的示例。

让你的笔记脱颖而出

我们可以在您的Jupyter notebook中使用警示框/注释框来突出显示重要内容或其他需要突出的内容。注释的颜色取决于指定的警报类型。只需在需要突出显示的单元格中添加以下任一代码或所有代码即可。

蓝色警示框:信息提示

p class="alert alert-block alert-info"

bTip:/b Use blue boxes (alert-info) for tips and notes.

If it’s a note, you don’t have to include the word “Note”.

/p

黄色警示框:警告

p class="alert alert-block alert-warning"

bExample:/b Yellow Boxes are generally used to include additional examples or mathematical formulas.

/p

绿色警示框:成功

p class="alert alert-block alert-success"

Use green box only when necessary like to display links to related content.

/p

红色警示框:高危

p class="alert alert-block alert-danger"

It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.

/p

打印单元格所有代码的输出结果

假如有一个Jupyter Notebook的单元格,其中包含以下代码行:

In [1]: 10+5

11+6

Out [1]: 17

单元格的正常属性是只打印最后一个输出,而对于其他输出,我们需要添加print()函数。然而通过在notebook顶部添加以下代码段可以一次打印所有输出。

添加代码后所有的输出结果就会一个接一个地打印出来。

In [1]: 10+5

11+6

12+7

Out [1]: 15

Out [1]: 17

Out [1]: 19

恢复原始设置:

InteractiveShell.ast_node_interactivity = "last_expr"

使用'i'选项运行python脚本

从命令行运行python脚本的典型方法是:python hello.py。但是,如果在运行相同的脚本时添加-i,例如python -i hello.py,就能提供更多优势。接下来看看结果如何。

首先,即使程序结束,python也不会退出解释器。因此,我们可以检查变量的值和程序中定义的函数的正确性。

其次,我们可以轻松地调用python调试器,因为我们仍然在解释器中:

import pdb

pdb.pm()

这能定位异常发生的位置,然后我们可以处理异常代码。

自动评论代码

Ctrl / Cmd + /自动注释单元格中的选定行,再次命中组合将取消注释相同的代码行。

删除容易恢复难

你有没有意外删除过Jupyter notebook中的单元格?如果答案是肯定的,那么可以掌握这个撤消删除操作的快捷方式。

如果您删除了单元格的内容,可以通过按CTRL / CMD + Z轻松恢复它。

如果需要恢复整个已删除的单元格,请按ESC + Z或EDIT撤消删除单元格。

结论

在本文中,我列出了使用Python和Jupyter notebook时收集的一些小提示。我相信它们会对你有用,能让你有所收获,从而实现轻松编码!

Python数据分析(八):农粮组织数据集探索性分析(EDA)

这里我们用 FAO(Food and Agriculture Organization) 组织提供的数据集,练习一下如何利用python进行探索性数据分析。

我们先导入需要用到的包

接下来,加载数据集

看一下数据量,

看一下数据的信息,

我们先来看一下variable,variable_full这两列的信息,

看一下统计了多少国家,

看一下有多少个时间周期,

看一下时间周期有哪些,

我们看一下某一列某个指标的缺失值的个数,比如variable是total_area时缺失值的个数,

我们通过几个维度来进行数据的分析:

我们按照上面的处理继续,现在我们想统计一下对于一个时间周期来说,不同国家在这个周期内的变化情况,

我们也可以按照国家分类,查看某个国家在不同时期的变化,

我们还可以根据属性,查看不同国家在不同周期内的变化情况,

我们还可以给定国家和指标,查看这个国家在这个指标上的变化情况,

我们还有region(区域)没有查看,我们来看一下:

通过上图可以看出,区域太多,不便于观察,我们可以将一些区域进行合并。减少区域数量有助于模型评估,可以创建一个字典来查找新的,更简单的区域(亚洲,北美洲,南美洲,大洋洲)

我们来看一下数据变化,

紧接着上面的数据处理,我们重新导入一下包,这次有一些新包,

我们看一下水资源的情况,

通过上图可以看出只有一小部分国家报告了可利用的水资源总量,这些国家中只有极少数国家拥有最近一段时间的数据,我们将删除变量,因为这么少的数据点会导致很多问题。

接下来我们看一下全国降雨指数,

全国降雨在2002年以后不再报到,所以我们也删除这个数据,

我们单独拿出一个洲来进行分析,举例南美洲,我们来看一下数据的完整性,

我们也可以指定不同的指标,

接下来,我们使用 pandas_profiling 来对单变量以及多变量之间的关系进行统计一下,

这里我们要计算的是,比如

我们按照 rural_pop 从小到大进行排序,发现的确有几个国家的农村人口是负数,

人口数目是不可能小于0,所以这说明数据有问题,存在脏数据,如果做分析预测时,要注意将这些脏数据处理一下。

接下来我们看一下偏度,我们规定,

正态分布的偏度应为零,负偏度表示左偏,正偏表示右偏。

偏度计算完后,我们计算一下峰度, 峰度也是一个正态分布,峰度不能为负,只能是正数 ,越大说明越陡峭,

接下来我们看一下,如果数据分布非常不均匀该怎么办呢,

上图是2013-2017年国家总人数的分布,通过上图我们发现,人口量少于200000(不考虑单位)的国家非常多,人口大于1200000的国家非常少,如果我们需要建模的话,这种数据我们是不能要的。这个时候我们应该怎么办呢?

通常,遇到这种情况,使用 log变换 将其变为正常。 对数变换 是数据变换的一种常用方式,数据变换的目的在于使数据的呈现方式接近我们所希望的前提假设,从而更好的进行统计推断。

接下来,我们用log转换一下,并看一下它的偏度和峰值,

可以看出偏度下降了很多,减少了倾斜。

可以发现峰度也下降了,接下来我们看一下经过log转换后的数据分布,

虽然数据还有一些偏度,但是明显好了很多,呈现的分布也比较标准。

首先我们先来看一下美国的人口总数随时间的变化,

接下来,我们查看北美洲每个国家人口总数随着时间的变化,

这个时候我们发现,一些国家由于人口数量本身就少,所以整个图像显示的不明显,我们可以改变一下参照指标,那我们通过什么标准化?我们可以选择一个国家的最小、平均、中位数、最大值...或任何其他位置。那我们选择最小值,这样我们就能看到每个国家的起始人口上的增长。

我们也可以用热度图来展示,用颜色的深浅来比较大小关系,

接下来我们分析一下水资源的分布情况,

我们可以进行一下log转换,

我们用热度图画一下,

连续值可以画成散点图,方便观看,

我们来看一下随着季节变化,人均GDP的变化情况,

相关程度:

相关度量两个变量之间的线性关系的强度,我们可以用相关性来识别变量。

现在我们单独拿出来一个指标分析是什么因素与人均GDP的变化有关系,正相关就是积极影响,负相关就是消极影响。

当我们在画图的时候也可以考虑一下利用bined设置一下区间,比如说连续值我们可以分成几个区间进行分析,这里我们以人均GDP的数量来进行分析,我们可以将人均GDP的数据映射到不同的区间,比如人均GDP比较低,比较落后的国家,以及人均GDP比较高,比较发达的国家,这个也是我们经常需要的操作,

做一下log变换,这里是25个bin

我们指定一下分割的标准,

我们还可以看一下人均GDP较低,落后国家的内部数据,下面我们看一下内部数据分布情况,用boxplot进行画图,

对于这部分的分布,我们还可以统计看一下其他指标,如下图所示,我们还可以看一下洪水的统计信息,

基于python的prosper借贷平台之数据分析

项目介绍:

p2p 借贷业务具有门槛低,渠道成本低的特性,风险防控对于出借企业来说非常重要。本项目需要

从大量借贷者的数据集中分析出容易违约和不容易违约的人群画像特征,以给业务做贷前决策使

用。同时使用机器学习算法,实现自动识别风险人群(精准率为 89.86%),加快人工审查效率。

项目具体内容:

1、使用 python pandas 工具进行数据清洗、缺失值、异常值处理以及特征指标筛选。

2、使用 python matplotlib 可视化工具进行探索式数据分析,展示用户关键特征如月收入、信用卡

透支情况对于违约率的影响情况。

3、使用机器学习随机森林进行建模分析,使用学习曲线、网格搜索、交叉验证,最终得到了一个评

分为 84.9%、精准率为 89.86%、召回率为 80.70%、auc 面积为 0.9337 数据预测模型。

? ? 本次数据训练使用的模型是随机森林分类算法,通过对预处理过的数据集进行训练,使用学习曲线、网格搜索、交叉验证。最终得到了一个评分为84.9%、精准率为89.86%、召回率为80.70%、 auc面积为0.9337 数据预测模型。?

数据预处理的基本流程与思路:

1、首先要明确有多少特征,哪些是连续的,哪些是类别的。

2、检查有没有缺失值,对确实的特征选择恰当方式进行弥补,使数据完整。

3、对连续的数值型特征进行标准化,使得均值为0,方差为1。

4、对类别型的特征进行one-hot编码。

5、将需要转换成类别型数据的连续型数据进行二值化。

6、为防止过拟合或者其他原因,选择是否要将数据进行正则化。

7、在对数据进行初探之后发现效果不佳,可以尝试使用多项式方法,寻找非线性的关系。

8、根据实际问题分析是否需要对特征进行相应的函数转换。

导入数据集,并查看数据基本情况。可以看到prosper原始数据量比较庞大,一个有113937个样本,80个特征列,1个标签列。

1.1、特征较多,先共删减一部分无用的特征。

1.2?查看数据缺失情况,可以看到有40个特征是存在数据缺失的,缺失率从0.000219-0.882909不等。下面处理缺失数据。

1.2.1?删除缺失值比较多的特征

下面两个特征缺失率太高,且与我们要分析的相关性不大,直接删除掉。

1.2.2 获取数据类型是分类变量的所有特征,并使用unknown进行填充

1.2.3 特殊变量使用计算公式进行填充

1.2.4 去掉意义重复列

1.2.5 删除缺失率比较少的特征的缺失数据行

处理完缺失数据后,样本量为106290,特征量为55

1.3 数据过滤

1.3.1 从2009年7月开始,Prosper调整了对客户的评估方式,此次我们只对2009-07-01后的贷款进行分析。

过滤完数据后,样本量变为82931,特征量为54

2.1单变量分析

0为未违约人数,1位违约人数,可以看到2009.07以后,违约率为22.90%

2.1.1不同地区贷款数量分布

从图中可以看到加利福尼亚州贷款数量远比其他州的数量高。由于prosper总部就位于加利福尼亚州,这与实际情况一致。其他排名靠前的分别是得克萨斯、纽约、佛罗里达、伊利诺伊,贷款数据均超过了5000条。根据2015年美国各州的GDP排名,这5个州刚好排名前五,而且顺序也是一致的。说明Prosper平台的用户主要分布在美国经济发达的地区。

2.1.2?贷款人收入情况分布

年薪在25000美金以上在美国属于技术性白领或者有一定学历的职员,50000美金已经是近金领阶层,比如:大学教授,医生等。从图中可以看出Prosper平台用户的收入水平都相对较高,有利于用户还款,利于平台和投资者的风险控制。

2.1.3贷款人职业分布

从图中可以看出,除了不愿意透露具体职业的人,大部分用户是教授、程序员、企业高管等具有一定社会地位的人,这部分人受过高等教育,信用有一定保障。另外,这与之前看到的收入情况相符。

2.1.4贷款人债务收入比分布

大部分用户的债务收入比在0.2左右,超过0.5的占很少部分。说明Prosper平台用户的还款能力还是比较乐观的

2.1.5?贷款者信用卡使用情况

BankcardUtilization代表的是信用卡使用金额和信用卡额度的比值,可以体现用户的资金需求。Prosper用户多是0.5~1之间,说明用户每个月还有信用卡要还,降低了其还款能力。

2.2?相关的关键因素对贷款违约率的影响

2.2.1借贷人收入IncomeRange对违约率的影响

从图中可以看出:

1.一般来说收入越高违约率越低

2.贷款的人员主要集中在中等收入群体

2.2.2?债务收入比DebtToIncomeRatio对违约率的影响

从上图可以看出:

1.债务收入比小于0.6时,违约数明显小于未违约数,

2.当债务收入比大于0.6时,两者的差距不是很明显甚至违约数大于未违约数,说明了债务收入比越大的人越容易违约

2.2.3 借款人BankcardUtilization对违约率的影响

1.总的来说,随着信用卡的透支比例越来越高,违约率也越来越高

2.SuperUse的违约率到了37.5%,这部分人群需要严格了监控,No Use人群也有31%的违约率,当初将信用卡透支比例为0和NA的数据都归类为No Use,显然没有这么简单,应该是大部分人群的NA值是为了隐藏自己的高透支比例而填写的

2.2.4 消费信用分CreditScoreRange对违约率的影响

从上图可以看出:

1.随着信用分数CreditScore的上升,它的违约率在下降

2.大部分贷款者的信用分为650-800,违约率在0.06-0.02

2.2.5 过去7年借款人违约次数DelinquenciesLast7Years对违约率的影响

过去七年违约次数(DelinquenciesLast7Years)能够衡量一个人在过去七年中征信情况,违约一次或以上的人在借款时违约概率更大。

?从上图可以看出:

1.总体来说过去7年违约次数越多,违约率越高

2.过去7年未违约的人数相对来说比其他违约的人数高很多,具体看下面的分析

3.1 数据转化

3.1.1类变量进行哑变量化

样本量变为82931,特征量为127

3.1.2?标签变量进行二分类

已完成贷款的样本量变为26365,特征量为127

未违约率为:0.7709084012895885;违约率为0.22909159871041151

3.2 至此,数据预处理的工作就告一段落,保存预处理好的数据。

?导入经过预处理的prosper借贷数据集

4.1?手工挑选特征查看一下建模效果

准确率为0.7695

4.2?使用模型自己选取特征

准确率为0.7780

4.3?使用学习曲线选取最优n_estimators

在0-200/20内学习,得到最优n_estimators=161,score = 0.8508

在151-171/20内学习,得到最优n_estimators=163,score = 0.8511

4.4?使用网格搜索调其他参数

在0-60/5内学习,得到最优max_depth=41

在0-60/5内学习,得到最优max_features=16

这里由于比较耗时,没有进一步细化选择更高的参数

4.4 最终模型效果

最终准确率 0.8490528905289052

混淆矩阵 :

[[5552? 554]

[1175 4914]]

精准率 : [0.82533076 0.89868325]

召回率 : [0.90926957 0.80702907]

roc和auc面积为0.9337

4.5 查看各特征的重要性

4.6?数据预测

预测的违约率0.0427

Python数据分析案例-药店销售数据分析

最近学习了Python数据分析的一些基础知识,就找了一个药品数据分析的小项目来练一下手。

数据分析的目的:

本篇文章中,假设以朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。

数据分析基本过程包括:获取数据、数据清洗、构建模型、数据可视化以及消费趋势分析。

数据准备

数据是存在Excel中的,可以使用pandas的Excel文件读取函数将数据读取到内存中,这里需要注意的是文件名和Excel中的sheet页的名字。读取完数据后可以对数据进行预览和查看一些基本信息。

获取数据:朝阳医院2018年销售数据.xlsx(非真实数据) 提取码: 6xm2

导入原始数据

数据准备

数据是存在Excel中的,可以使用pandas的Excel文件读取函数将数据读取到内存中,这里需要注意的是文件名和Excel中的sheet页的名字。读取完数据后可以对数据进行预览和查看一些基本信息。

获取数据:朝阳医院2018年销售数据.xlsx(非真实数据) 提取码: 6xm2

导入原始数据

数据清洗

数据清洗过程包括:选择子集、列名重命名、缺失数据处理、数据类型转换、数据排序及异常值处理

(1)选择子集

在我们获取到的数据中,可能数据量非常庞大,并不是每一列都有价值都需要分析,这时候就需要从整个数据中选取合适的子集进行分析,这样能从数据中获取最大价值。在本次案例中不需要选取子集,暂时可以忽略这一步。

(2)列重命名

在数据分析过程中,有些列名和数据容易混淆或产生歧义,不利于数据分析,这时候需要把列名换成容易理解的名称,可以采用rename函数实现:

(3)缺失值处理

获取的数据中很有可能存在缺失值,通过查看基本信息可以推测“购药时间”和“社保卡号”这两列存在缺失值,如果不处理这些缺失值会干扰后面的数据分析结果。

缺失数据常用的处理方式为删除含有缺失数据的记录或者利用算法去补全缺失数据。

在本次案例中为求方便,直接使用dropna函数删除缺失数据,具体如下:

(4)数据类型转换

在导入数据时为了防止导入不进来,会强制所有数据都是object类型,但实际数据分析过程中“销售数量”,“应收金额”,“实收金额”,这些列需要浮点型(float)数据,“销售时间”需要改成时间格式,因此需要对数据类型进行转换。

可以使用astype()函数转为浮点型数据:

在“销售时间”这一列数据中存在星期这样的数据,但在数据分析过程中不需要用到,因此要把销售时间列中日期和星期使用split函数进行分割,分割后的时间,返回的是Series数据类型:

此时时间是没有按顺序排列的,所以还是需要排序一下,排序之后索引会被打乱,所以也需要重置一下索引。

其中by:表示按哪一列进行排序,ascending=True表示升序排列,ascending=False表示降序排列

先查看数据的描述统计信息

通过描述统计信息可以看到,“销售数量”、“应收金额”、“实收金额”这三列数据的最小值出现了负数,这明显不符合常理,数据中存在异常值的干扰,因此要对数据进一步处理,以排除异常值的影响:

数据清洗完成后,需要利用数据构建模型(就是计算相应的业务指标),并用可视化的方式呈现结果。

月均消费次数 = 总消费次数 / 月份数(同一天内,同一个人所有消费算作一次消费)

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

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

从结果可以看出,每天消费总额差异较大,除了个别天出现比较大笔的消费,大部分人消费情况维持在1000-2000元以内。

接下来,我销售时间先聚合再按月分组进行分析:

结果显示,7月消费金额最少,这是因为7月份的数据不完整,所以不具参考价值。

1月、4月、5月和6月的月消费金额差异不大.

2月和3月的消费金额迅速降低,这可能是2月和3月处于春节期间,大部分人都回家过年的原因。

d. 分析药品销售情况

对“商品名称”和“销售数量”这两列数据进行聚合为Series形式,方便后面统计,并按降序排序:

截取销售数量最多的前十种药品,并用条形图展示结果:

结论:对于销售量排在前几位的药品,医院应该时刻关注,保证药品不会短缺而影响患者。得到销售数量最多的前十种药品的信息,这些信息也会有助于加强医院对药房的管理。

每天的消费金额分布情况:一横轴为时间,纵轴为实收金额画散点图。

结论: 从散点图可以看出,每天消费金额在500以下的占绝大多数,个别天存在消费金额很大的情况。

/article

(责任编辑:IT教学网)

更多

推荐照片处理文章