数据分析 订阅
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。 [1]  数据分析的数学基础在20世纪早期就已确立,但直到计算机的出现才使得实际操作成为可能,并使得数据分析得以推广。数据分析是数学与计算机科学相结合的产物。 [2] 展开全文
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。 [1]  数据分析的数学基础在20世纪早期就已确立,但直到计算机的出现才使得实际操作成为可能,并使得数据分析得以推广。数据分析是数学与计算机科学相结合的产物。 [2]
信息
数据也称
观测值,实验、测量、观察结果
外文名
Data Analysis
中文名
数据分析
目    的
最大化地开发数据的功能
数据分析简介
数据分析指用适当的统计、分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。 [2]  数据也称为观测值,是实验、测量、观察、调查等的结果。数据分析中所处理的数据分为定性数据和定量数据。只能归入某一类而不能用数值进行测度的数据称为定性数据。定性数据中表现为类别,但不区分顺序的,是定类数据,如性别、品牌等;定性数据中表现为类别,但区分顺序的,是定序数据,如学历、商品的质量等级等。 [1] 
收起全文
精华内容
参与话题
问答
  • 16种常用的数据分析方法汇总

    万次阅读 多人点赞 2017-04-04 16:16:33
    经常会有朋友问到一个朋友,数据分析常用的分析方法有哪些,我需要学习哪个等等之类的问题,今天数据分析精选给大家整理了十六种常用的数据分析方法,供大家参考学习。 一、描述统计 描述性统计是指运用制表和...

    经常会有朋友问到一个朋友,数据分析常用的分析方法有哪些,我需要学习哪个等等之类的问题,今天数据分析精选给大家整理了十六种常用的数据分析方法,供大家参考学习。

    一、描述统计

    描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。

    1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。

    2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。

    二、假设检验

    1、参数检验

    参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验 。

    1)U验   使用条件:当样本含量n较大时,样本值符合正态分布

    2)T检验 使用条件:当样本含量n较小时,样本值符合正态分布

    A  单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别;

    B  配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似;

    C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。

    2、非参数检验

    非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。

    适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。

    A 虽然是连续数据,但总体分布形态未知或者非正态;

    B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10以下;

    主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。

    三、信度分析

    检査测量的可信度,例如调查问卷的真实性。

    分类:

    1、外在信度:不同时间测量时量表的一致性程度,常用方法重测信度

    2、内在信度;每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如何,常用方法分半信度。

    四、列联表分析

    用于分析离散变量或定型变量之间是否存在相关。

    对于二维表,可进行卡方检验,对于三维表,可作Mentel-Hanszel分层分析。

    列联表分析还包括配对计数资料的卡方检验、行列均为顺序变量的相关检验。

    五、相关分析

    研究现象之间是否存在某种依存关系,对具体有依存关系的现象探讨相关方向及相关程度。

    1、单相关: 两个因素之间的相关关系叫单相关,即研究时只涉及一个自变量和一个因变量;

    2、复相关 :三个或三个以上因素的相关关系叫复相关,即研究时涉及两个或两个以上的自变量和因变量相关;

    3、偏相关:在某一现象与多种现象相关的场合,当假定其他变量不变时,其中两个变量之间的相关关系称为偏相关。

    六、方差分析

    使用条件:各样本须是相互独立的随机样本;各样本来自正态分布总体;各总体方差相等。

    分类

    1、单因素方差分析:一项试验只有一个影响因素,或者存在多个影响因素时,只分析一个因素与响应变量的关系

    2、多因素有交互方差分析:一顼实验有多个影响因素,分析多个影响因素与响应变量的关系,同时考虑多个影响因素之间的关系

    3、多因素无交互方差分析:分析多个影响因素与响应变量的关系,但是影响因素之间没有影响关系或忽略影响关系

    4、协方差分祈:传统的方差分析存在明显的弊端,无法控制分析中存在的某些随机因素,使之影响了分祈结果的准确度。协方差分析主要是在排除了协变量的影响后再对修正后的主效应进行方差分析,是将线性回归与方差分析结合起来的一种分析方法,

    七、回归分析

    分类:

    1、一元线性回归分析:只有一个自变量X与因变量Y有关,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布。

    2、多元线性回归分析

    使用条件:分析多个自变量与因变量Y的关系,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布 。

    1)变呈筛选方式:选择最优回归方程的变里筛选法包括全横型法(CP法)、逐步回归法,向前引入法和向后剔除法

    2)横型诊断方法:

    A 残差检验: 观测值与估计值的差值要艰从正态分布

    B 强影响点判断:寻找方式一般分为标准误差法、Mahalanobis距离法

    C 共线性诊断:

    • 诊断方式:容忍度、方差扩大因子法(又称膨胀系数VIF)、特征根判定法、条件指针CI、方差比例
    • 处理方法:增加样本容量或选取另外的回归如主成分回归、岭回归等

    3、Logistic回归分析

    线性回归模型要求因变量是连续的正态分布变里,且自变量和因变量呈线性关系,而Logistic回归模型对因变量的分布没有要求,一般用于因变量是离散时的情况

    分类:

    Logistic回归模型有条件与非条件之分,条件Logistic回归模型和非条件Logistic回归模型的区别在于参数的估计是否用到了条件概率。

    4、其他回归方法 非线性回归、有序回归、Probit回归、加权回归等

    八、聚类分析

    样本个体或指标变量按其具有的特性进行分类,寻找合理的度量事物相似性的统计量。

    1、性质分类:

    Q型聚类分析:对样本进行分类处理,又称样本聚类分祈 使用距离系数作为统计量衡量相似度,如欧式距离、极端距离、绝对距离等

    R型聚类分析:对指标进行分类处理,又称指标聚类分析 使用相似系数作为统计量衡量相似度,相关系数、列联系数等

    2、方法分类:

    1)系统聚类法: 适用于小样本的样本聚类或指标聚类,一般用系统聚类法来聚类指标,又称分层聚类

    2)逐步聚类法 :适用于大样本的样本聚类

    3)其他聚类法 :两步聚类、K均值聚类等

    九、判别分析

    1、判别分析:根据已掌握的一批分类明确的样品建立判别函数,使产生错判的事例最少,进而对给定的一个新样品,判断它来自哪个总体

    2、与聚类分析区别

    1)聚类分析可以对样本逬行分类,也可以对指标进行分类;而判别分析只能对样本

    2)聚类分析事先不知道事物的类别,也不知道分几类;而判别分析必须事先知道事物的类别,也知道分几类

    3)聚类分析不需要分类的历史资料,而直接对样本进行分类;而判别分析需要分类历史资料去建立判别函数,然后才能对样本进行分类

    3、进行分类 :

    1)Fisher判别分析法 :

    以距离为判别准则来分类,即样本与哪个类的距离最短就分到哪一类, 适用于两类判别;

    以概率为判别准则来分类,即样本属于哪一类的概率最大就分到哪一类,适用于

    适用于多类判别。

    2)BAYES判别分析法 :

    BAYES判别分析法比FISHER判别分析法更加完善和先进,它不仅能解决多类判别分析,而且分析时考虑了数据的分布状态,所以一般较多使用;

    十、主成分分析

    将彼此梠关的一组指标变适转化为彼此独立的一组新的指标变量,并用其中较少的几个新指标变量就能综合反应原多个指标变量中所包含的主要信息 。

    十一、因子分析

    一种旨在寻找隐藏在多变量数据中、无法直接观察到却影响或支配可测变量的潜在因子、并估计潜在因子对可测变量的影响程度以及潜在因子之间的相关性的一种多元统计分析方法

    与主成分分析比较:

    相同:都能够起到済理多个原始变量内在结构关系的作用

    不同:主成分分析重在综合原始变适的信息.而因子分析重在解释原始变量间的关系,是比主成分分析更深入的一种多元统计方法

    用途:

    1)减少分析变量个数

    2)通过对变量间相关关系探测,将原始变量进行分类

    十二、时间序列分析

    动态数据处理的统计方法,研究随机数据序列所遵从的统计规律,以用于解决实际问题;时间序列通常由4种要素组成:趋势、季节变动、循环波动和不规则波动。

    主要方法:移动平均滤波与指数平滑法、ARIMA横型、量ARIMA横型、ARIMAX模型、向呈自回归横型、ARCH族模型

    十三、生存分析

    用来研究生存时间的分布规律以及生存时间和相关因索之间关系的一种统计分析方法

    1、包含内容:

    1)描述生存过程,即研究生存时间的分布规律

    2)比较生存过程,即研究两组或多组生存时间的分布规律,并进行比较

    3)分析危险因素,即研究危险因素对生存过程的影响

    4)建立数学模型,即将生存时间与相关危险因素的依存关系用一个数学式子表示出来。

    2、方法:

    1)统计描述:包括求生存时间的分位数、中数生存期、平均数、生存函数的估计、判断生存时间的图示法,不对所分析的数据作出任何统计推断结论

    2)非参数检验:检验分组变量各水平所对应的生存曲线是否一致,对生存时间的分布没有要求,并且检验危险因素对生存时间的影响。

    A 乘积极限法(PL法)

    B 寿命表法(LT法)

    3)半参数横型回归分析:在特定的假设之下,建立生存时间随多个危险因素变化的回归方程,这种方法的代表是Cox比例风险回归分析法

    4)参数模型回归分析:已知生存时间服从特定的参数横型时,拟合相应的参数模型,更准确地分析确定变量之间的变化规律

    十四、典型相关分析

    相关分析一般分析两个变里之间的关系,而典型相关分析是分析两组变里(如3个学术能力指标与5个在校成绩表现指标)之间相关性的一种统计分析方法。

    典型相关分析的基本思想和主成分分析的基本思想相似,它将一组变量与另一组变量之间单变量的多重线性相关性研究转化为对少数几对综合变量之间的简单线性相关性的研究,并且这少数几对变量所包含的线性相关性的信息几乎覆盖了原变量组所包含的全部相应信息。

    十五、R0C分析

    R0C曲线是根据一系列不同的二分类方式(分界值或决定阈).以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线

    用途:

    1、R0C曲线能很容易地査出任意界限值时的对疾病的识别能力

    用途 ;

    2、选择最佳的诊断界限值。R0C曲线越靠近左上角,试验的准确性就越高;

    3、两种或两种以上不同诊断试验对疾病识别能力的比较,一股用R0C曲线下面积反映诊断系统的准确性。

    十六、其他分析方法

    多重响应分析、距离分祈、项目分祈、对应分祈、决策树分析、神经网络、系统方程、蒙特卡洛模拟等。

    展开全文
  • 数据分析基础面试题

    千次阅读 多人点赞 2020-01-04 15:08:49
    数据分析 1.同比与环比表示什么 同比:与历史同时期比较,就是与不同年份的同一时期作比较 例如:2019年7月份与2018年7月分相比 环比:与上一统计段比较,就是与前一个相邻的时期作比较 例如:2019年7月分与...

    数据分析

    1.同比与环比表示什么

    • 同比:与历史同时期比较,就是与不同年份的同一时期作比较
      • 例如:2019年7月份与2018年7月分相比
    • 环比:与上一统计段比较,就是与前一个相邻的时期作比较
      • 例如:2019年7月分与2019年6月份相比

    2.阐述一个数据分析的主要流程(例子:航空客户价值分析)

    ​ 业务系统 ——> 数据抽取 ——> 数据探索与预处理 ——> 建模&应用 ——> 结果&反馈

    在这里插入图片描述

    3.如何进行异常值处理

    ​ 在数据预处理时,异常值是否剔除,需视具体情况而定,因为有些异常值可能蕴含着有用的信息。

    异常值处理方法 方法描述
    删除含有异常值的记录 直接将含有异常值的记录删除
    视为缺失值 将异常值视为缺失值,利用缺失值处理的方法进行处理
    平均值修正 可用前后两个观测的平均值修正该异常值
    不处理 直接在具有异常值的数据上进行挖掘建模

    4.什么是数据规约?如何进行数据规约

    ​ 在大数据集上进行复杂的数据分析和挖掘需要很长的时间,数据规约产生更小但保持原数据完整性的新数据集。在规约后的数据集上进行分析和挖掘将更有效率

    ​ 数据规约的意义在于:

    -  降低无效、错误数据对建模的影响,提高建模的准确性
    
    • 少量且具有代表性的数据将大幅缩减数据挖掘所需的时间
    • 降低储存数据的成本

    数据规约分为属性规约和数值规约

    属性规约常用的方法

    属性规约方法 方法描述 方法解析
    合并属性 将一些旧属性合为新属性 初始属性集:{A1,A2,A3,B1,B2,C}
    {A1,A2,A3} ——>A
    {B1,B2} ——>B
    ---->规约后属性集:{A,B,C}
    逐步向前选择 从一个空属性集开始,每次从原来属性集合中选择一个当前最优的属性添加到当前属性子集中。直到无法选择出最优属性或满足一定阈值约束为止 初始属性集:{A1,A2,A3,A4,A5,A6}
    {} —>{A1} —>{A1,A4}
    ---->约束后属性集:{A1,A4,A6}
    逐步向后选择 从一个空属性集开始,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性子集中消去,直到无法选择出最差属性为止或满足一定阈值约束为止 初始属性集:{A1,A2,A3,A4,A5,A6}
    —>{A1,A3,A4,A5,A6}—>{A1,A4,A5,A6}
    ---->约束后属性集:{A1,A4,A6}
    决策数归纳 利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策树,所有没有出现在这个决策树上的属性均可认为是无关属性,因此将这些属性从初始集合中删除,就可以获得一个较优的属性子集 初始属性集:{A1,A2,A3,A4,A5,A6}
    在这里插入图片描述
    ---->规约后属性集:{A1,A4,A6}
    主成分分析 用较少的变量去解释原始数据中的大部分变量,即将许多相关性很高的变量转换为彼此相互独立或并不相关的变量

    数值规约

    ​ 数值规约指通过选择代替的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,例如回归(线性回归和多元回归)和对数线性模型(近似离散属性集中的多维概率分布)。无参数方法就需要存放实际数据,例如:直方图、聚类、抽样(采样)

    • 直方图

      直方图使用分箱来近似数据分布,是一种流行的数据规约形式。属性A的直方图将A的数据分布划分为不相交的子集或桶。如果每个桶只代表单个属性值/频率对,则该桶称为单桶。通常,桶表示给定属性的一个连续区间。例如:
      在这里插入图片描述

    • 聚类

      聚类技术将数据元组(即记录,数据表中的一行)视为对象。它将对象划分为簇,使一个簇中的对象相互’相似’,而与其他簇中的对象’相异’。在数据规约中,用数据的簇替换实际数据。该技术的有效性依赖于簇的定义是否符合数据的分布性质。

    • 抽样

      抽样也是一种数据规约技术,它用比原始数据小得多的随机样本(子集)表示原始数据集。假定原始数据集D包含N个元组,可以采用抽样方法对D进行抽样。下面介绍常用的抽样方法。

      • s个样本无放回简单随机抽样:从D的N个元组中抽取s个样本(s<N),其中D中任意元组被抽取的概率为1/N,即所有元组的抽取是等可能的。
      • s个样本有放回简单随机抽样:该方法类似于无放回简单随机抽样,不同在于每次一个元组从D中抽取后,记录它,然后放回原处。
      • 聚类抽样:如果D中的元组放入M个互不相交的簇,则可以得到s个簇的简单随机抽样,其中s<M。例如,数据库中元组通常一次检索一页,这样每页就可以视为一个簇。
      • 分层抽样:如果D划分成互不相交的部分 ,称作层,则通过对每一层的简单随机抽样就可以得到D的分层样本。例如,可以得到关于顾客数据的一个分层样本,按照顾客的每个年龄创建分层。

      用于数据规约时,抽样最常用来估计聚集查询的结果。在指定的误差范围内,可以确定(使用中心极限定理)估计一个给定的函数所需的样本大小。通常样本的大小s相对于N非常小。而通过简单的增加样本大小,这样的集合可以进一步求精。

    • 参数回归

      简单线性模型和对书性模型可以用来近似描述给定的数据。(简单)线性模型对数据建模,使之拟合一条直线。

    5. pandas如何进行两个表的合并?内连接、外连接、左连接、右连接查询有什么区别?

    ​ pandas提供了一个类似于关系数据库的连接(join)操作方法merge,可以根据一个或多个键将不同DataFrame中的行连接起来,语法:

    merge(left, right, how='inner', on=None, left_on=None, right_on=None,
    		left_index=False, right_index=False, sort=True,
    		suffixes=('_x', '_y'), copy=True, indecator=False)
    
    • left与right:两个不同的Dataframe

    • how:指的是合并(连接)的方式,有inner(内连接)、left(左外连接)、right(右外连接)、outer(完全外连接)

    • on:指的是用于连接的列索引名称。必须存在左右两个DataFrame对象中,如果每有指定且其他也未指定则以两个DataFrame的列名交集作为连接键

    • left_index/right_index:使用左/右侧DataFrame中的行索引作为连接键

      以上几个参数使常用到的

    不同连接之间的区别

    - 内连接(pd.merge(left, right, on='xxx')):统计重叠的键并,没有重叠的就不记录
    - 左连接(pd.merge(left, right, how='left',  on='xxx')):以左表为主,在右表中找与左表xxx列数据形同的,没有为NaN
    - 右连接(pd.merge(left, right, how='right', on='xxx')):以右表为主,在左表中找与右表xxx列数据形同的,没有为NaN
    - 外连接(pd.merge(left, right, how='outer', on='xxx')):两张表数据全部统计,没有的为NaN
    

    6. 为什么要进行数据规范化?标准规范化的计算公式是什么?

    ​ 数据规范化处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲,数值间的差别可能很大,不进行处理可能会影响到数据到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。

    • 最大-最小规范化

      对原始数据的线性变换,将数值值映射到[0,1]之间,公式:

    在这里插入图片描述

    • 零-均值规范化(最常用)

      也称标准差标准化,经过处理的数据的均值为0,标准差为1,公式:

    在这里插入图片描述

    σ为原始数据的标准差

    • 小数定标规范化

      通过移动属性值的小数位数,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值,公式:

    在这里插入图片描述

    7. 有哪些缺失值处理方法

    ​ 处理缺失值的方法可分为3类:删除记录、数据插补和不处理。

    • 数据插补

      插补方法 方法描述
      均值/中位数/众数插补 根据属性值的类型,用该属性值的平均数/中位数/众数进行插补
      使用固定值 将缺失的属性值用一个常量替换
      最近临插补 在记录中找到与缺失样本最接近的样本的该属性值插补
      回归方法 对带有缺失值的变量,根据已有数据和与其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值
      插值法 插值法是利用已知点建立合适的插值函数f(x),未知值由对应点xi求出的函数值f(xi)近似代替
    • 删除小部分记录如果能达到既定目标,那么删除含有缺失值的记录是最有效的,但是该方法有很大的局限性,这是以减少历史数据来换取数据的完备,会浪费大量资源。尤其是在数据比较少的情况下,删除少量记录可能会严重影响到分析结果的客观性和正确性。

    8. 统计量分析中有哪些常见的统计量,列出计算方法。

    ​ 用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。

    ​ 平均水平的指标是对个体集中趋势的度量,使用最广泛的是均值和中位数;反应变异程度的指标是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。

    1. 集中趋势度量

    • 均值

      均值是所有数据的平均值

      如果求n个原始观察数据的平均数,计算公式:

    在这里插入图片描述
    加权均值的公式:

    在这里插入图片描述

    频率分布表的平均数计算公式:
    在这里插入图片描述

    作为一个统计量,均值的主要问题是对极端值很敏感。如果数据中存在极端值或者数据是偏态分布的,那么均值就不能很好的度量数据的集中趋势。为了消除少数极端值的影响,可以使用截断均值或者中位数来度量数据的集中趋势。截断均值是去掉高、低极端值之后的平均数。

    • 中位数

      中位数时将一组观察值从小到大的顺序排列,位于中间的那个数。

      当总数为奇数时:

    在这里插入图片描述

    为偶数时:

    在这里插入图片描述

    • 众数

      众数是指数据集中出现最频繁的值。众数并不经常用来度量定性变量的中心位置,更适用于定性变量。众数不具有唯一性。当然,众数一般用于离散型变量而非连续性变量。

    2. 离中趋势度量

    • 极差:最大值 - 最小值

    • 标准差:在这里插入图片描述

    • 变异系数

      变异系数度量标准差相对于均值的离中趋势,计算公式:

    在这里插入图片描述

    变异系数主要用来比较两个或多个具有不同单位或者不同波动幅度的数据集的离中趋势。

    • 四分位数间距

      四分位数包括上四分位数和下四分位数。将所有数值由大到小排列并分成四等分,处于第一个分割点位置的数值是下四分位数,处于第二个分割点位置的数值是中位数,处于第三个分割点位置的数值是上四分位数。

      [外链图片转存中…(img-fNT6LohT-1578120951598)]

      变异系数主要用来比较两个或多个具有不同单位或者不同波动幅度的数据集的离中趋势。

    • 四分位数间距

      四分位数包括上四分位数和下四分位数。将所有数值由大到小排列并分成四等分,处于第一个分割点位置的数值是下四分位数,处于第二个分割点位置的数值是中位数,处于第三个分割点位置的数值是上四分位数。

      四分位数间距,是上四分位数于下四分位数之差,其间包含了全部观察值的一半。其值越大,说明数据的变异程度越大;反之,说明变异程度越小。

    展开全文
  • [入门数据分析的第一堂课] 这是一门为数据分析小白量身打造的课程,你从网络或者公众号收集到很多关于数据分析的知识,但是它们零散不成体系,所以第一堂课首要目标是为你介绍: Ø 什么是数据分析-知其然才...
  • MATLAB数据分析与统计

    万人学习 2017-05-06 13:18:12
    全面学习MATLAB在数据统计分析领域中的知识
  • 基于Python的数据分析

    万次阅读 多人点赞 2019-02-25 15:50:02
    下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念、数据分析流程、Python优势、常用模块的用途以及使用 Python进行数据分析的学习方法及步骤; 随着大数据和人工智能时代的到来,网络和信息技术开始...

    下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念、数据分析流程、Python优势、常用模块的用途以及使用
    Python进行数据分析的学习方法及步骤;

    随着大数据和人工智能时代的到来,网络和信息技术开始渗透到人类日常生活的方方面面,产生的数据量也呈现指数级增长的态势,同时现有数据的量级已经远远超过了目前人力所能处理的范畴。在此背景下,数据分析成为数据科学领域中一个全新的研究
    课题。在数据分析的程序语言选择上,由于Python语言在数据分析和处理方面的优势,大量的数据科学领域的从业者使用Python
    来进行数据科学相关的研究工作。

    1、数据分析的概念

    数据分析是指用适当的分析方法对收集来的大量数据进行分析,提取有用信息和形成结论,对数据加以详细研究和概括总结的过程。随着信息技术的高速发展,企业生产、收集、存储和处理数据的能力大大提高,同时数据量也与日俱增。把这些繁杂的数据通过数据分析方法进行提炼,以此研究出数据的发展规律和预测趋势走向,进而帮助企业管理层做出决策。

    2、数据分析的流程

    数据分析是一种解决问题的过程和方法,主要的步骤有需求分析、数据获取、数据预处理、分析建模、模型评价与优化、部署:

    1)需求分析

    数据分析中的需求分析是数据分析环节中的第一步,也是非常重要的一步,决定了后续的分析方法和方向。主要内容是根据业务、生产和财务等部门的需要,结合现有的数据情况,提出数据分析需求的整体分析方向、分析内容,最终和需求方达成一致。

    2)数据获取

    数据获取是数据分析工作的基础,是指根据需求分析的结果提取、收集数据。数据获取主要有两种方式:网络爬虫获取和本地获取。网络爬虫获取指的是通过Python编写爬虫程序合法获取互联网中的各种文字、语音、图片和视频等信息;本地获取指的是通过计算机工具获取存储在本地数据库中的生产、营销和财务等系统的历史数据和实时数据。

    3)数据预处理

    数据预处理是指对数据进行数据合并、数据清洗、数据标准化和数据变换,并直接用于分析建模的这一过程的总称。其中,数据合并可以将多张互相关联的表格合并为一张;数据清洗可以去掉重复、缺失、异常、不一致的数据;数据标准化可以去除特征间的量纲差异;数据交换则可以通过离散化、哑变量处理等技术满足后期分析与建模的数据要求。在数据分析过程中,数据预处理的各个过程互相交叉,并没有固定的先后顺序。

    4)分析建模

    分析建模是指通过对比分析、分组分析、交叉分析、回归分析等分析方法,以及聚类模型、分类模型、关联规则、智能推荐等模型和算法,发现数据中的有价值信息,并得出结论的过程。

    5)模型评价与优化

    模型评价是指对于已经建立的一个或多个模型,根据其模型的类别,使用不同的指标评价其性能优劣的过程。模型的优化则是指模型性能在经过模型评价后已经达到了要求,但在实际生产环境应用过程中,发现模型的性能并不理想,继而对模型进行重构与优化的过程。

    6)部署

    部署是指将数据分析结果与结论应用至实际生产系统的过程。根据需求的不同,部署阶段可以是一份包含了现状具体整改措施的数据分析报告,也可以是将模型部署在整个生产系统的解决方案。在多数项目中,数据分析员提供的是一份数据分析报告或者一套解决方案,实际执行与部署的是需求方。

    3、Python是功能强大的数据分析工具

    Python具有丰富和强大的库,它常被称为胶水语言,能够把用其他语言制作的各种模块很轻松地连接在一起,是一门更易学、更严谨的程序设计语言,常用于数据分析、机器学习、矩阵运算、科学数据可视化、数字图像处理、网络爬虫、Web应用等;R语言常用于统计分析、机器学习、科学数据可视化等;MATLAB则用于矩阵运算、数值分析、科学数据可视化、机器学习、符号运算、数字图像处理及信号处理等。可以看出,以上三种语言均可进行数据分析。

    4、Python进行数据分析的优势

    Python是一门应用非常广泛的计算机语言,在数据科学领域具有无可比拟的优势。Python正在逐渐成为数据科学领域的主流语言。Python数据分析具有以下几方面优势:

    1》语法简单精炼。对于初学者来说,比起其他编程语言,Python更容易上手;

    2》有许多功能强大的库。结合在编程方面的强大实力,可以只使用Python这一种语言就可以去构建以数据为中心的应用程序;

    3》不仅适用于研究和原型构建,同时也适用于构建生产系统。研究人员和工程技术人员使用同一种编程工具,能给企业带来显著的组织效益,并降低企业的运营成本;

    4》Python程序能够以多种方式轻易地与其他语言的组件“粘接”在一起。例如,Python的C语言API可以帮助Python程序灵活地调用C程序,这意味着用户可以根据需要给Python程序添加功能,或者在其他环境系统中使用Python;

    5》Python是一个混合体,丰富的工具集使它介于系统的脚本语言和系统语言之间。Python不仅具备所有脚本语言简单和易用的特点,还提供了编译语言所具有的高级软件工程工具。

    5、Python数据分析常用类库介绍

    Python拥有IPython、Num Py、Sci Py、pandas、Matplot⁃lib、scikit-learn和Spyder等功能齐全、接口统一的库,能为数据分析工作提供极大的便利。其中,Num Py主要有以下特点:

    1)具有快速高效的多维数组对象ndarray;
    2)具有对数组执行元素级计算及直接对数组执行数学运算的函数;
    3)具有线性代数运算、傅里叶变换及随机数生成的功能;
    4)能将C、C++、Fortran代码集成到Python;
    5)可作为算法之间传递数据的容器。

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • Python数据分析与挖掘

    万人学习 2018-01-08 11:17:45
    从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过...
  • python数据分析:时间序列分析(Time series analysis)

    千次阅读 热门讨论 2018-12-06 14:01:20
    时间序列分析包括用于分析时间序列数据的方法,以便提取有意义的统计数据数据的其他特征。时间序列预测是使用模型根据先前观察到的值预测未来值。虽然回归分析通常采用的方式是测试理论,即一个或多个...

    何为时间序列分析:

    时间序列经常通过折线图绘制。时间序列用于统计,信号处理,模式识别,计量经济学,数学金融,天气预报,地震预测,脑电图,控制工程,天文学,通信工程,以及主要涉及时间测量的任何应用科学和工程领域。

    时间序列分析包括用于分析时间序列数据的方法,以便提取有意义的统计数据和数据的其他特征。时间序列预测是使用模型根据先前观察到的值预测未来值。虽然回归分析通常采用的方式是测试理论,即一个或多个独立时间序列的当前值会影响另一个时间序列的当前值,但这种时间序列分析不称为“时间序列分析”,其重点是比较不同时间点的单个时间序列或多个相关时间序列的值。中断时间序列 分析是对单个时间序列的干预分析。

    时间序列数据具有自然的时间顺序。这使得时间序列分析不同于横断面研究,其中没有观察的自然顺序(例如,通过参考其各自的教育水平来解释人们的工资,其中个体的数据可以以任何顺序输入)。时间序列分析也不同于空间数据分析,其中观测通常与地理位置相关(例如,通过位置来计算房价以及房屋的内在特征)。一个随机的时间序列的模型通常会反映出这样一个事实,即与时间紧密相连的观测结果将比进一步分开的观察结果更加密切相关。此外,时间序列模型通常会利用时间的自然单向排序,因此给定时期的值将表示为从过去的值中获得,而不是从未来的值中获得(参见时间可逆性)。

    时间序列分析可应用于实值,连续数据,离散 数字数据或离散符号数据(即字符序列,如英语中的字母和单词)。

    常用时间序列分析:

    时间序列的常用算法包括移动平均(MA, Moving Average)、指数平滑(ES, Exponen-tial Smoothing)、差分自回归移动平均模型(ARIMA , Auto-regressive Integrated Moving Average Model)三大主要类别,每个类别又可以细分和延伸出多种算法。

    当数据集规模较大、数据粒度丰富时,我们可以选择多种时间序列的预测模式。时间序列的数据粒度可分为秒、分、小时、天、周、月、季度、年等,不同的粒度都可以用来做时间序列预测。
    假如有3650天(完整10年)以每分钟时间戳为粒度的数据,那么这份数据集会有5256 000(60分钟24小时365天*10年)条记录。基于该数据集预测今天的总数据,可以考虑的时间序列模式有三种:

    • 整合模式:将历史数据按每天数据进行汇总,得到按天为粒度的共计3650条时间序列数据;然后应用所有数据集做时间序列分析,预测的时间序列项目为1(天)。
    • 横向模式:将历史数据按每小时做汇总,得到按小时为粒度87600条时间序列数据;然后将要预测的1天划分为24小时(即24个预测点),这样会形成24个预测模型,每个模型只预测对应的小时点数据,预测的时间序列项目为1(小时);最后将预测得到的24个小时点的数据求和得到今天的总数据。
    • 纵向模式:这种模式的粒度更细,无需对历史数据做任何形式的汇总,这样有525600条时间序列数据。将要预测的1天划分为1440个分钟点(60分钟*24小时),这样会形成1440个预测模型,每个模型只预测对应的分钟点的数据,预测的时间序列项目为1(分钟);最后将预测得到的1440个分钟点的数据求和得到今天的总数据。

    这三种方式的训练集都是3650条,即按天为粒度的数据。横向模式和纵向模式由于做更细的粒度切分,因此需要更多的模型,这意味着需要更多的时间来做训练和预测。当第一种整合模式不能满足需求或者预测结果不佳时,可以尝试后两种模式。

    平稳性

    平稳性是做时间序列分析的前提条件,所谓平稳通俗理解就是数据没有随着时间呈现明显的趋势和规律,例如剧烈波动、递增、递减等,而是相对均匀且随机地分布在均值附近。在ARIMA模型中的I就是对数据做差分以实现数据的平稳,而ARIMA关键参数p、d、q中的d即时间序列成为平稳时所做的差分次数。
    如何判断时间序列数据是否需要平稳性处理?一般有三种方法:

    • 观察法:通过输出时间序列图发现数据是否平稳。本示例中的adf_val函数便含有该方法。
    • 自相关和偏相关法:通过观察自相关和偏相关的系数分析数据是否平稳。
    • ADF检验:通过ADF检验得到的显著性水平分析数据是否平稳。本示例中的adf_val函数便有含有该方法。

    实现数据的平稳有以下几种方法:

    • 对数法:对数处理可以减小数据的波动,使其线性规律更加明显。但需要注意的是对数处理只能针对时间序列的值大于0的数据集。
    • 差分法:一般来说,非纯随机的时间序列经一阶差分或者二阶差分之后就会变得平稳(statsmodels的ARIMA模型自动支持数据差分,但最大为2阶差分)。
    • 平滑法:根据平滑技术的不同,可分为移动平均法和指数平均法,这两个都是最基本的时间序列方法。
    • 分解法:将时序数据分离成不同的成分,包括成长期趋势、季节趋势和随机成分等。

    白噪声

    白噪声(white noise)检验也称为随机性检验,用于检验时间序列的各项数值之间是否具有任何相关关系,白噪声分布是应用时间序列分析的前提。检测时间序列是否属于随机性分布,可通过图形法和Ljung Box法检验。

    • 图形法:时间序列应该是围绕均值随机性上下分布的状态。
    • Ljung Box法:是对时间序列是否存在滞后相关的一种统计检验,判断序列总体的相关性或者说随机性是否存在。
      白噪声检验通常和数据平稳性检验是协同进行数据检验的,这意味着如果平稳性检验通过,白噪声检验一般也会通过。

    python实现

    import pandas as pd  # pandas库
    import numpy as np  # numpy库
    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf  # acf和pacf展示库
    from statsmodels.tsa.stattools import adfuller  # adf检验库
    from statsmodels.stats.diagnostic import acorr_ljungbox  # 随机性检验库
    from statsmodels.tsa.arima_model import ARMA  # ARMA库
    import matplotlib.pyplot as plt  # matplotlib图形展示库
    import prettytable  # 导入表格库
    # 由于pandas判断周期性时会出现warning,这里忽略提示
    import warnings
    warnings.filterwarnings('ignore')
    
    #### 读取数据 ####
    # 创建解析列的功能对象
    date_parse = lambda dates: pd.datetime.strptime(dates, '%m-%d-%Y') 
    # 读取数据
    df = pd.read_table('https://raw.githubusercontent.com/ffzs/dataset/master/time_series.txt', delimiter='\t', index_col='date', date_parser=date_parse)  
    # 将列转换为float32类型
    ts_data = df['number'].astype('float32') 
    print ('data summary') 
    # 打印输出时间序列数据概况
    print (ts_data.describe()) 
    

    在这里插入图片描述

    # 多次用到的表格
    def pre_table(table_name, table_rows):
        '''
        :param table_name: 表格名称,字符串列表
        :param table_rows: 表格内容,嵌套列表
        :return: 展示表格对象
        '''
        table = prettytable.PrettyTable()  # 创建表格实例
        table.field_names = table_name  # 定义表格列名
        for i in table_rows:  # 循环读多条数据
            table.add_row(i)  # 增加数据
        return table
    
    
    # 稳定性(ADF)检验
    def adf_val(ts, ts_title, acf_title, pacf_title):
        '''
        :param ts: 时间序列数据,Series类型
        :param ts_title: 时间序列图的标题名称,字符串
        :param acf_title: acf图的标题名称,字符串
        :param pacf_title: pacf图的标题名称,字符串
        :return: adf值、adf的p值、三种状态的检验值
        '''
        plt.figure()
        plt.plot(ts)  # 时间序列图
        plt.title(ts_title)  # 时间序列标题
        plt.show()
        plot_acf(ts, lags=20, title=acf_title).show()  # 自相关检测
        plot_pacf(ts, lags=20, title=pacf_title).show()  # 偏相关检测
        adf, pvalue, usedlag, nobs, critical_values, icbest = adfuller(ts)  # 稳定性(ADF)检验
        table_name = ['adf', 'pvalue', 'usedlag', 'nobs', 'critical_values', 'icbest']  # 表格列名列表
        table_rows = [[adf, pvalue, usedlag, nobs, critical_values, icbest]]  # 表格行数据,嵌套列表
        adf_table = pre_table(table_name, table_rows)  # 获得平稳性展示表格对象
        print ('stochastic score')  # 打印标题
        print (adf_table)  # 打印展示表格
        return adf, pvalue, critical_values,  # 返回adf值、adf的p值、三种状态的检验值
    
    
    # 白噪声(随机性)检验
    def acorr_val(ts):
        '''
        :param ts: 时间序列数据,Series类型
        :return: 白噪声检验的P值和展示数据表格对象
        '''
        lbvalue, pvalue = acorr_ljungbox(ts, lags=1)  # 白噪声检验结果
        table_name = ['lbvalue', 'pvalue']  # 表格列名列表
        table_rows = [[lbvalue, pvalue]]  # 表格行数据,嵌套列表
        acorr_ljungbox_table = pre_table(table_name, table_rows)  # 获得白噪声检验展示表格对象
        print ('stationarity score')  # 打印标题
        print (acorr_ljungbox_table)  # 打印展示表格
        return pvalue  # 返回白噪声检验的P值和展示数据表格对象
    
    
    ##### 原始数据检验 ####
    # 稳定性检验
    adf, pvalue1, critical_values = adf_val(ts_data, 'raw time series', 'raw acf', 'raw pacf')  
    # 白噪声检验
    pvalue2 = acorr_val(ts_data)  
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    # 数据平稳处理
    def get_best_log(ts, max_log=5, rule1=True, rule2=True):
        '''
        :param ts: 时间序列数据,Series类型
        :param max_log: 最大log处理的次数,int型
        :param rule1: rule1规则布尔值,布尔型
        :param rule2: rule2规则布尔值,布尔型
        :return: 达到平稳处理的最佳次数值和处理后的时间序列
        '''
        if rule1 and rule2:  # 如果两个规则同时满足
            return 0, ts  # 直接返回0和原始时间序列数据
        else:  # 只要有一个规则不满足
            for i in range(1, max_log):  # 循环做log处理
                ts = np.log(ts)  # log处理
                adf, pvalue1, usedlag, nobs, critical_values, icbest = adfuller(ts)  # 稳定性(ADF)检验
                lbvalue, pvalue2 = acorr_ljungbox(ts, lags=1)  # 白噪声(随机性)检验
                rule_1 = (adf < critical_values['1%'] and adf < critical_values['5%'] and adf < critical_values[
                    '10%'] and pvalue1 < 0.01)  # 稳定性(ADF)检验规则
                rule_2 = (pvalue2 < 0.05)  # 白噪声(随机性)规则
                rule_3 = (i < 5)
                if rule_1 and rule_2 and rule_3:  # 如果同时满足条件
                    print ('The best log n is: {0}'.format(i))  # 打印输出最佳次数
                    return i, ts  # 返回最佳次数和处理后的时间序列
    
    # 还原经过平稳处理的数据
    def recover_log(ts, log_n):
        '''
        :param ts: 经过log方法平稳处理的时间序列,Series类型
        :param log_n: log方法处理的次数,int型
        :return: 还原后的时间序列
        '''
        for i in range(1, log_n + 1):  # 循环多次
            ts = np.exp(ts)  # log方法还原
        return ts  # 返回时间序列
    
    #### 对时间序列做稳定性处理 #####
    # 稳定性检验规则
    rule1 = (adf < critical_values['1%'] and adf < critical_values['5%'] and adf < critical_values[
        '10%'] and pvalue1 < 0.01)  
    # 白噪声检验的规则
    rule2 = (pvalue2[0,] < 0.05)  
    # 使用log进行稳定性处理
    log_n, ts_data = get_best_log(ts_data, max_log=5, rule1=rule1, rule2=rule2)
    
    #### 稳定后数据进行检验 ####
    # 稳定性检验
    adf, pvalue1, critical_values = adf_val(ts_data, 'final time series', 'final acf', 'final pacf')  
    # 白噪声检验
    pvalue2 = acorr_val(ts_data)  
    

    稳定性符合要求
    在这里插入图片描述

    # arma最优模型训练
    def arma_fit(ts):
        '''
        :param ts: 时间序列数据,Series类型
        :return: 最优状态下的p值、q值、arma模型对象、pdq数据框和展示参数表格对象
        '''
        max_count = int(len(ts) / 10)  # 最大循环次数最大定义为记录数的10%
        bic = float('inf')  # 初始值为正无穷
        tmp_score = []  # 临时p、q、aic、bic和hqic的值的列表
        print ('each p/q traning record') # 打印标题
        print('p  q           aic          bic         hqic')
        for tmp_p in range(max_count + 1):  # p循环max_count+1次
            for tmp_q in range(max_count + 1):  # q循环max_count+1次
                model = ARMA(ts, order=(tmp_p, tmp_q))  # 创建ARMA模型对象
                try:
                    # ARMA模型训练 disp不打印收敛信息 method条件平方和似然度最大化
                    results_ARMA = model.fit(disp=-1, method='css')  
                except:
                    continue  # 遇到报错继续
                finally:
                    tmp_aic = results_ARMA.aic  # 模型的获得aic
                    tmp_bic = results_ARMA.bic  # 模型的获得bic
                    tmp_hqic = results_ARMA.hqic  # 模型的获得hqic
                    print('{:2d}|{:2d}|{:.8f}|{:.8f}|{:.8f}'.format(tmp_p, tmp_q, tmp_aic, tmp_bic, tmp_hqic))
                    tmp_score.append([tmp_p, tmp_q, tmp_aic, tmp_bic, tmp_hqic])  # 追加每个模型的训练参数和结果
                    if tmp_bic < bic:  # 如果模型bic小于最小值,那么获得最优模型ARMA的下列参数:
                        p = tmp_p  # 最优模型ARMA的p值
                        q = tmp_q  # 最优模型ARMA的q值
                        model_arma = results_ARMA  # 最优模型ARMA的模型对象
                        aic = tmp_bic  # 最优模型ARMA的aic
                        bic = tmp_bic  # 最优模型ARMA的bic
                        hqic = tmp_bic  # 最优模型ARMA的hqic
        pdq_metrix = np.array(tmp_score)  # 将嵌套列表转换为矩阵
        pdq_pd = pd.DataFrame(pdq_metrix, columns=['p', 'q', 'aic', 'bic', 'hqic'])  # 基于矩阵创建数据框
        table_name = ['p', 'q', 'aic', 'bic', 'hqic']  # 表格列名列表
        table_rows = [[p, q, aic, bic, hqic]]  # 表格行数据,嵌套列表
        parameter_table = pre_table(table_name, table_rows)  # 获得最佳ARMA模型结果展示表格对象
    #     print ('each p/q traning record')  # 打印标题
    #     print (pdq_pd)  # 打印输出每次ARMA拟合结果,包含p、d、q以及对应的AIC、BIC、HQIC
        print ('best p and q')  # 打印标题
        print (parameter_table)  # 输出最佳ARMA模型结果展示表格对象
        return model_arma  # 最优状态下的arma模型对象
    
    
    # 模型训练和效果评估
    def train_test(model_arma, ts, log_n, rule1=True, rule2=True):
        '''
        :param model_arma: 最优ARMA模型对象
        :param ts: 时间序列数据,Series类型
        :param log_n: 平稳性处理的log的次数,int型
        :param rule1: rule1规则布尔值,布尔型
        :param rule2: rule2规则布尔值,布尔型
        :return: 还原后的时间序列
        '''
        train_predict = model_arma.predict()  # 得到训练集的预测时间序列
        if not (rule1 and rule2):  # 如果两个条件有任意一个不满足
            train_predict = recover_log(train_predict, log_n)  # 恢复平稳性处理前的真实时间序列值
            ts = recover_log(ts, log_n)  # 时间序列还原处理
        ts_data_new = ts[train_predict.index]  # 将原始时间序列数据的长度与预测的周期对齐
        RMSE = np.sqrt(np.sum((train_predict - ts_data_new) ** 2) / ts_data_new.size)  # 求RMSE
        # 对比训练集的预测和真实数据
        plt.figure()  # 创建画布
        train_predict.plot(label='predicted data', style='--')  # 以虚线展示预测数据
        ts_data_new.plot(label='raw data')  # 以实线展示原始数据
        plt.legend(loc='best')  # 设置图例位置
        plt.title('raw data and predicted data with RMSE of %.2f' % RMSE)  # 设置标题
        plt.show()  # 展示图像
        return ts  # 返回还原后的时间序列
    
    # 训练最佳ARMA模型并输出相关参数和对象
    model_arma = arma_fit(ts_data)
    # 模型训练和效果评估
    ts_data = train_test(model_arma, ts_data, log_n, rule1=rule1, rule2=rule2)
    

    在这里插入图片描述

    # 预测未来指定时间项的数据
    def predict_data(model_arma, ts, log_n, start, end, rule1=True, rule2=True):
        '''
        :param model_arma: 最优ARMA模型对象
        :param ts: 时间序列数据,Series类型
        :param log_n: 平稳性处理的log的次数,int型
        :param start: 要预测数据的开始时间索引
        :param end: 要预测数据的结束时间索引
        :param rule1: rule1规则布尔值,布尔型
        :param rule2: rule2规则布尔值,布尔型
        :return: 无
        '''
        predict_ts = model_arma.predict(start=start, end=end)  # 预测未来指定时间项的数据
        print ('-----------predict data----------')  # 打印标题
        if not (rule1 and rule2):  # 如果两个条件有任意一个不满足
            predict_ts = recover_log(predict_ts, log_n)  # 还原数据
        print (predict_ts)  # 展示预测数据
        # 展示预测趋势
        plt.figure()  # 创建画布
        ts.plot(label='raw time series')  # 设置推向标签
        predict_ts.plot(label='predicted data', style='--')  # 以虚线展示预测数据
        plt.legend(loc='best')  # 设置图例位置
        plt.title('predicted time series')  # 设置标题
        plt.show()  # 展示图像
        
    #### 模型预测应用 ####
    # 设置时间
    start = '1991-07-28'  
    end = '1991-08-02' 
    # 预测
    predict_data(model_arma, ts_data, log_n, start, end, rule1=rule1, rule2=rule2)  
    

    在这里插入图片描述

    补充:

    statsmodels中的ARMA

    statsmodels常用的时间序列模型包括AR、ARMA和ARIMA,并都集中在statsmodels. tsa.arima_model下面。ARMA(p, q)是AR§和MA(q)模型的组合,关于p和q的选择,一种方法是观察自相关图ACF和偏相关图PACF,通过截尾、拖尾等信息分析应用的模型以及适应的p和q的阶数;另一种方法是通过循环的方法,遍历所有条件并通过AIC、BIC值自动确定阶数。
    ARMA(以及statsmodels中的其他算法)跟sklearn中的算法类似,也都有方法和属性两种应用方式。常用的ARMA方法:

    • fit:使用卡尔曼滤波器的最大似然法拟合ARMA模型。
    • from_formula:基于给定的公式和数据框创建模型。
    • geterrors:基于给定的参数获取ARMA进程的错误。
    • hessian:基于给定的参数计算Hessian信息。
    • loglike:计算ARMA模型的对数似然。
    • loglike_css:条件求和方差似然函数。
    • predict:应用ARMA模型做预测。
    • score:得分函数。

    参考:
    《python数据分析与数据化运营》 宋天龙

    展开全文
  • Python的日期和时间处理及操作 python中日期和时间格式化输出的方法 ... Python的日期和时间处理 datetime模块 from datetime import datetime now = datetime.now() print(now) 2020-02-06 ...
  • Python之--时间序列(一)&时间数据分析

    千次阅读 2019-03-25 15:34:40
    不管在哪个领域中(金融学、经济学、生态学、神经科学、物理学等),时间序列数据都是一种重要的结构化数据形式,在多个时间点观察或者测量到的任何事物都可以形成一段时间序列。很多时间序列是固定频率的,也就是说...
  • 首先,表格的数据格式如下: 1、获取某年某月数据 data_train = pd.read_csv('data/train.csv') # 将数据类型转换为日期类型 data_train['date'] = pd.to_datetime(data_train['date']) # 将date设置为index...
  • 0 导入模块 import numpy as np ...1 解析数据 def datestr2num(s): return datetime.datetime.strptime(s.decode('ascii'),"%d-%m-%Y").date().weekday() dates,close = np.loadtxt('data.csv',delimite...
  • 数据分析常用6种分析思路

    万次阅读 多人点赞 2019-03-19 14:20:57
    作为数据分析师,你是否常因为缺乏分析思路,而被以下问题影响到幸福感(甚至怀疑人生)? 1. 新上线某个产品,需要监控转化率效果,既要看总体情况,也要看细分渠道; 2. 策划营销活动,预算有限...
  • 掌握这5个常用数据分析方法,做分析不再没思路 原创数据分析不是个事儿2020-04-08 16:00:36 想必做过数据分析的同学一定接触过很多分析方法,比如漏斗法,同期群,A/B测试等等。并且由于不同版本的演绎,造成了...
  • 做大数据开发好还是大数据分析比较好一些?哪个薪资高? 零基础学习大数据开发,还是大数据分析?哪方面比较好? 今天我们来从技术角度和薪资角度全面进行分析,方便你的选择。 技术区别 在做选择之前,需要了解...
  • 最常用的四种大数据分析方法

    万次阅读 多人点赞 2017-09-19 09:32:13
    本文主要讲述数据挖掘分析领域中,最常用的四种数据分析方法:描述型分析、诊断型分析、预测型分析和指令型分析。
  • python数据分析

    万次阅读 多人点赞 2018-07-22 19:43:44
    python绘图、python数据分析、python库、股票分析
  • Python数据分析与机器学习实战教程,该课程精心挑选真实的数据集为案例,通过python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例。课程以实战为基础,所有课时都结合代码演示...
  • python基础教程 python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器 python基础系列教程——Python库的安装与卸载 python基础系列教程——Python3.x标准模块库目录 ...
  • 系列一:《python数据分析基础与实践》 章节1Python概况 课时2Python简介 章节2Python安装 课时3安装Anaconda 课时4使用Anaconda 章节3数据准备 课时5数据类型 – 布尔型 课时6数据类型 – 数值型 课时7数据类型 – ...
  • Python数据分析实例

    万次阅读 多人点赞 2019-06-14 22:13:37
    Python数据分析 Python爬取网页数据 // An highlighted block import requests if __name__=="__main__": response = requests.get("https://book.douban.com/subject/26986954/") content = response.content....
  • Python数据分析入门(一)——初探数据可视化

    万次阅读 多人点赞 2018-08-10 17:38:19
    前言 静下心算算,当程序员已经有好几年了,不过自大学时代开始,学习对我来说就是个被动接受的过程,学校的课程、当时热门的移动端开发、数据库的学习、web学习、PHP后端学习……需要做什么我便去学什么,到了今天...
  • Python数据分析学习总结

    千次阅读 2017-10-02 22:43:19
    Python数据分析学习总结 概述数据分析的含义与目标方法:统计分析方法目标:提取有用信息手段:研究、概括、总结 Python与数据分析Python特点:简洁、开发效率高、运算速度慢、胶水特性(集成C语言)Python数据分析...
  • 译者:SeanCheney 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 机器学习交流群 629470233 ApacheCN 学习资源 Sklearn 与 TensorFlow 机器学习实用指南 ...
  • Python数据分析之思维导图汇总

    千次阅读 多人点赞 2019-06-28 14:54:16
    关于Python数据分析,其实网上能够找到的学习资源很多,主要分为两类:一类是提供各种资源的推荐,比如书单、教程、以及学习的先后顺序;另一类是提供具体的学习内容,知识点或实际案例。 但很多繁琐而又杂乱的内容...
  • Python 虽然是一门编程语言,但是它并不难学,不仅不难学,而且很容易上手,这也是...不是哦,今天是来告诉你Python数据分析的重要性,同时推荐一本好书给你们,《对比Excel,轻松学习Python数据分析》,此书已经加...
  • python数据分析入门

    2017-09-16 16:33:20
    ②掌握数据基础类库2.Python数据分析三大基础库 ①Numpy:数值计算库,ndarray ②Matplotlib:绘图库,pyplot ③pandas:数据分析库,Dataframe3. 数据挖掘 = 数据分析+机器学习+大数据(hadoop spark)4....
  • Python数据分析:股票数据分析案例

    千次阅读 2019-05-01 15:54:26
    Python数据分析:股票数据分析案例 步骤: 准备数据 可视化数据、审查数据 处理数据 根据ACF、PACF定阶 拟合ARIMA模型 预测 import pandas as pd import pandas_datareader import datetime import matplotlib....
  • python数据分析分析(8G)学习视频免费分享

    万次阅读 多人点赞 2019-05-28 19:36:57
    相关数据下载,请关注公众号&amp;quot;一行数据&amp;quot;,回复&amp;quot;python可视化&amp;quot;可得 很多人学python是从作图开始的,一方面很容易产生成就感,另一方面也是添加了学习的乐趣。 ...
  • 数据分析与可视化(一)1.1 数据分析1.1.1数据、信息与数据分析 1.1 数据分析 1.1.1数据、信息与数据分析 数据: 数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的...
  • 建议收藏!最有效率的python数据分析入门书单

    千次阅读 多人点赞 2019-06-02 17:03:31
    常有人问起来,我是怎么转行到数据分析行业的,又是怎么从零编程入坑python的,面对市面上那么多《xx天入门》的书籍,该如何挑选?今天小文将捋一捋我的学(ru)习(keng)路径以及方法。 书中自有黄金屋,书中自有...

空空如也

1 2 3 4 5 ... 20
收藏数 2,979,265
精华内容 1,191,706
关键字:

数据分析