财经大数据分析-以Python为工具 课件第3、4章 数据清洗、股权性质信息-应用数据转置_第1页
财经大数据分析-以Python为工具 课件第3、4章 数据清洗、股权性质信息-应用数据转置_第2页
财经大数据分析-以Python为工具 课件第3、4章 数据清洗、股权性质信息-应用数据转置_第3页
财经大数据分析-以Python为工具 课件第3、4章 数据清洗、股权性质信息-应用数据转置_第4页
财经大数据分析-以Python为工具 课件第3、4章 数据清洗、股权性质信息-应用数据转置_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python与财经大数据分析基础第3章——数据清洗

CONTENTS目录3.1数据标签重命名3.2缺失值处理3.3异常值处理3.4数据去重3.5数据替换3.6数据标准化3.7实操练习题

数据处理过程中,原始数据可能存在着各种不利于分析及后续处理的因素,如数据缺失、异常值等。这些因素不仅会影响数据建模,更会影响数据分析的结果,故数据清洗尤为重要。

数据清洗的目的包括两点:第一,通过清洗使数据可用;第二,让数据变得更适合后续的分析过程。换句话说,“脏”的数据要洗,干净的数据也要洗。3.1数据标签重命名3.1数据标签重命名批处理。DateFrame数据结构支持批量地重命名行列标签,帮助我们将数据行列标签修改为符合自己习惯的或依照惯例使用的标签名称,方便后续调用、代码阅读和理解。3.1缺失值处理3.2缺失值处理3.2

缺失值处理

(1)缺失值查看在pandas包中,可以使用isnull()与notnull()函数找到数据中的缺失值。其通过返回布尔值的方式帮助我们识别数据中的缺失值:若isnull()返回值为True,或notnull()返回值为False,则数据中存在缺失值。数据集大小不同时可使用不同的方法查看缺失值:对于容量较小的数据集,可以使用isnull()语句;对于容量较大的数据集,一般采取以下两种方式:一是可以使用info函数查看,通过info函数可以查看字段的数据类型以及各字段下非空值的数量;二是使用对insull()输出的布尔值求和来查看。3.2

缺失值处理

(2)缺失值删除当数据量较大或数据冗余时,需要对存在缺失值的数据进行过滤,可以使用dropna()函数删除缺失值数据,也可以选择删除整行或整列。该函数的具体语法如下所示:3.2

缺失值处理

(3)缺失值填充在处理缺失值的过程中,直接删除缺失值是一种简单直接的办法,但也有可能因此使得原数据中的重要信息丢失,本部分将介绍另一种处理缺失值的方法——缺失值填充,使用fillna()函数可以填充数据集中的空值。该函数的具体语法如下所示:3.2

缺失值处理3.3异常值处理3.3异常值处理异常值,是远离绝大多数样本点的特殊群体,也称为离群点,这些异常值,在某些建模场景下会导致结论的错误。其中一种典型的异常值即为极端值。极端值是指样本中其数值明显偏离其余值的个别样本。在数据分析过程中,对数据集进行异常值的识别与修正,是必不可少的一环。异常值检测的方法包括常用法与建模法两种。其中常用法包括:3σ方法、IQR方法与缩尾法;建模法包括:KNN算法(基于近邻度异常点检测)、K-means(基于聚类方法的异常点检测)等。极端值的处理方式与异常值类似,进行极端值检测时常用到上述方法中的3σ方法、IQR方法与缩尾法。3.3异常值处理

3σ方法3σ方法是处理数据极端值最常用的方法。它是指按一定概率确定一个置信区间,将超过该置信区间的数据进行剔除。3σ方法也存在一定局限性,在对正态或近似正态分布的数据进行处理时,它是一种以数据量充分大为前提(n>10)的方法,数据量过小时使用该方法剔除异常值是不够可靠的。3σ方法的原则如下:μ为平均值,σ为标准差,数值分布在(μ-σ,μ+σ)的概率为0.6827;数值分布在(μ-2σ,μ+2σ)的概率为0.9545;数值分布在(μ-3σ,μ+3σ)的概率为0.9973。当数据值集中在(μ-2σ,μ+2σ)区间时,超过此范围的概率不足5%,属于小概率事件,可以认为处于该区间外的数据为异常值;当数据值集中在(μ-3σ,μ+3σ)区间时,超过此范围的概率不足0.3%,即超出该范围的数据可以认为是极端异常值。3.3异常值处理IQR方法四分位距(interquartilerange),是衡量一组数据离散程度的统计量,用IQR表示。其值等于第一四分位数(25%)和第三四分位数(75%)的差距,计算公式为:IQR=Q_3-Q_1定义异常值与极端异常值,表达式如下所示:3.3异常值处理缩尾法缩尾法(Winsorize)是一种处理极端值的方法。通常,缩尾处理将超出变量特定百分位范围的数值替换为其特定百分位数值。进行缩尾法处理异常值或极端值时,将用到winsorize()函数,在处理大样本数据时,缩尾处理比3σ方法高效。winsorize函数的具体语法如下所示:3.3异常值处理3.3异常值处理KNN算法(基于近邻度的异常点检测)在进行异常值判断与处理时,确定数据邻近性度量比确定其统计分布更有意义,此时,数据集的异常点是由其K-最近邻(KNN)测定的。异常点测定对K值高度敏感。K值过小时,少量的邻近异常点可能导致较低的异常点得分;K值过大时,点数少于K的簇中所有的对象都可能成为异常点。因此,为使K值的选取更具稳健性,可以使用K个最近邻的平均距离。该方法的优势在于简单、易操作,缺点在于对于参数的选取具有敏感性。在第十四章机器学习中,详细讲解KNN算法的原理与实战。3.3异常值处理K-means算法(基于聚类方法的异常点检测)当一个对象是基于聚类的离群点时,如果该对象不强属于任何簇,那么该对象属于离群点。K-means算法是基于聚类的异常点检测方法,其对异常点非常敏感,通过聚类检测异常点时,常会因为异常点而影响聚类,从而导致结构缺失有效性。因此,可以使用如下方法解决该问题:对象聚类、删除异常点、对象再次聚类。基于线性与接近线性复杂度的聚类技术检测异常点可能是高度有效的,但聚类算法产生的簇的质量对该算法产生的异常点的质量影响非常大。在十四章机器学习中,详细讲解K-means算法的原理与实战。3.4数据去重3.4

数据去重数据去重是指在数据集中,找出重复的数据并将其删除,只保存唯一的数据单元的过程。在数据预处理过程中,这是一项经常性操作,数据去重会带来很多好处,如节省存储空间、提升写入性能和提高模型精度等。数据去重一般可以通过duplicated()和drop_duplicates()两个函数实现,下面进行详细介绍。3.4

数据去重(1)duplicated()函数使用duplicated()函数可以判断数据中是否存在重复值,函数输出结果将返回一个布尔序列来显示各行是否有重复行,没有重复行显示为False,有重复行显示为True。具体语法如下所示:3.4

数据去重(2)drop_duplicates()函数使用drop_duplicates()函数可以在找出重复值的同时将其删除,只保存唯一的数据单元。具体语法如下所示:3.5数据替换3.5数据替换在进行数据清洗时,时常需要批量地替换或插入数据,但单个修改一方面效率过低,另一方面也增加了出错的概率。Pandas提供了replace()函数和insert()函数,能帮助我们高效地完成批量的数据替换和插入。(1)replace()函数replace()函数常用于数据的批量替换,如把字符串中的old(旧字符串)替换为new(新字符串)。具体语法如下所示:3.5数据替换3.5数据替换(2)insert()函数insert()函数用于将指定对象插入列表的指定位置。具体语法如下所示:3.6数据标准化3.6

数据标准化在数据分析之前,有时需要将各类数据进行标准化预处理,便于利用标准值进行数据分析。数据标准化在统计中表现为统计数据的指数化,数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,使所有指标对测评方案的作用趋同;数据无量纲化处理主要解决数据的可比性。3.6

数据标准化(1)Z-Score方法Z-Score方法基于原始数据的均值和标准差实现标准化,公式为:Z-Score适合大多数类型数据,也是很多工具的默认标准化方法。然而,这是一种中心化方法,会改变原有数据的分布结构,不适合用于对稀疏数据处理。3.6

数据标准化(2)min-max标准化Min-Max标准化是指对原始数据进行线性变换,将值映射到[0,1]之间,公式为:min-max标准化方法保留了原始数据之间的相互关系,但是如果标准化后,新输入的数据超过了原始数据的取值范围,即不在原始区间中,则会产生越界错误。因此这种方法适用于原始数据的取值范围已经确定的情况。3.7实操练习题3.6

数据标准化对已经读取的资产负债表数据,进行以下操作:1.对列标签进行重命名,标签名为CSMAR数据库中给定的中文名称;2.查看数据缺失的情况,并删除资产合计为缺失的行;3.对资产合计的极端值按照上下1%进行缩尾处理;4.对其他应收款的缺失值用0替换;5.对资产合计进行Z-Score和Min-Max标准化。Python与财经大数据分析基础第4章

股权性质信息整理——应用数据转置

CONTENTS目录4.1T转置4.2行列互换4.3数据透视4.4数组转置4.5应用实践“转置”是一个数学名词,常用于矩阵的计算过程中。设A为m×n阶矩阵(即m行n列),第i行j列的元素为Aij,把A的行列互相交换从而得到一个新的矩阵AT,这一过程称为矩阵的转置。在Python中,数据转置是将原数据的行列互换,以更符合研究逻辑,更方便地进行计算和分析,在数据预处理时经常使用,为之后的数据筛选、合并、统计操作提供方便。本章将介绍以下五个Pandas模块与数据转置有关的函数。4.1T转置4.1T转置最简单直接的转置操作是将数据沿对角线翻转,在这个过程中数据的形状发生了变化,数据逻辑也发生了变化,但是数据的对应关系保持不变。为了更方便地进行数据处理和分析,充分利用行列的关系表达,我们时常使用transpose()函数对原数据进行转置操作,转置效果如下图所示:4.1T转置transpose()函数的具体语法如下所示:DateFrame.T是DateFrame.transpose()的别名和简写方法。为方便起见,可以直接使用DateFrame.T进行转置操作。transpose()函数只能进行最简单的整体翻转操作,想要对数据进行更复杂的行列变换处理,需要其他的转置方式。4.2行列互换4.2行列互换如果数据结构比较复杂,索引层数较多,则需要使用stack()函数与unstack()函数进行操作。stack()是将数据的列索引转换为行索引,unstack()是将数据的行索引转换为列索引,从而改变数据样式,以更符合研究习惯和后续调用。4.2行列互换stack()函数与unstack()函数的基本语法类似,stack()函数将列中指定levels的列,堆叠到行索引中;unstack()函数将行中指定levels的行,堆叠到列索引中。具体语法如下所示:4.2行列互换4.3数据透视4.3数据透视4.3.1melt()函数与stack()函数和unstack()函数进行行列索引的互换不同,melt()函数是将列索引转化成数据,从而将DataFrame从宽格式转换为长格式。melt()函数的使用效果如下图所示,类似于Excel中的数据逆透视。4.3数据透视melt()函数的主要任务是将DataFrame压缩为一种格式,其中一列或多列是标识符变量,而其余列被认为是测量变量,且不会旋转到行轴,只剩下两个非标识符列,分别为变量variable和值value。具体语法如下所示:4.3数据透视4.3.2

pivot()函数与melt()函数相反,pivot()函数是将数据转化成行列索引,使用来自指定索引的唯一值来形成DataFrame的轴,进行数据重塑,从而将DataFrame从长格式转换为宽格式。pivot()函数的使用效果如下图所示,类似于Excel中的数据透视。具体语法如下所示:4.3数据透视4.4数据转置4.1数据转置本节主要针对Numpy模块的多维数组进行转置操作介绍。下图分别是二维数组和三维数组的转置效果图。Numpy模块中有三种方式能够对数组进行转置操作,分别是T属性、transpose()函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论