Python数据分析报告_第1页
Python数据分析报告_第2页
Python数据分析报告_第3页
Python数据分析报告_第4页
Python数据分析报告_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

Python学习数据分析与数据挖掘•第一页,共84页。认识PythonPython是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido

van

Rossum于1989年底发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU

GeneralPublic

License)协议

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用

Python快速生成程序的原型,然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。第二页,共84页。Python优点有哪些Python是一种开源的、解析性的,面向对象的编程语言Python使用一种优雅的语法,可读性强Python具有丰富的库,可以处理各种工作Python支持类和多层继承等的面向对象编程技术Python可运行在多种计算机平台和操作系统中,如Unix、Windows、MacOS、Ubuntu、OS/2等等第三页,共84页。为什么选择Python进行数据分析

在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。

近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只是用Python这一种语言去构建以数据为中心的应用程序。

作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。第四页,共84页。课程内容1.Python环境搭建1.1

python版本选择

1.2

python

安装Python基础python基础语法2.4

Python函数2.2

python数据类型2.5

Python模块2.3

条件和循环2.6

Python文件I/OPython库介绍NumPy库介绍3.2

Pandas库介绍4.3

挖掘建模数据处理与分析4.1

数据探索

4.2

数据预处理实例分析Titanic数据集分析

5.2

餐饮客户价值分析第五页,共84页。1.1

Python环境搭建Python2.X和Python3.X–Python的3.0版本,常被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。–为了不带入过多的累赘,Python

3.0在设计的时候没有考虑向下相容,许多针对早期Python版本设计的程式都无法在Python

3.0上正常执行。–大多数第三方库都正在努力地相容Python

3.0版本。即使无法立即使用Python3.0,也建议编写相容Python

3.0版本的程式,然后使用Python

2.6,Python2.7来执行。In

summary

:

Python

2.x

is

legacy,

Python

3.x

is

thepresent

and

future

ofthe

language第六页,共84页。1.2

Python安装Unix

&

Linux平台安装Python打开WEB浏览器访问/download/选择适用于Unix/Linux的源码压缩包。下载及解压压缩包。如果你需要自定义一些选项修改Modules/Setup执行./configure脚本makemake

install第七页,共84页。Window平台安装Python打开WEB浏览器访问/download/在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi文件,XYZ为你要安装的版本号。要使用安装程序python-XYZ.msi,Windows系统必须支持MicrosoftInstaller

2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持MSI。Windows

XP和更高版本已经有MSI,很多老机器也可以安装MSI。下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。第八页,共84页。集成开发环境选择PyCharmPyCharm是由JetBrains

打造的一款Python

IDE,支持macOS、Windows、Linux系统。

PyCharm

功能:调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……PyCharm下载地址:https:///pycharm/download/第九页,共84页。Pycharm软件界面第十页,共84页。编写我的第一个Python程序Hello

World程序简单的计算器第十一页,共84页。2.1

Python基本语法Python标识符在Python里,标识符由字母、数字、下划线组成。在Python

中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。Python

中的标识符是区分大小写的。Python

可以同一行显示多条语句,方法是用分号;分开。以下划线开头的标识符是有特殊意义的。以单下划线开头_foo

的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from

xxx

import

*

而导入以双下划线开头的

foo

代表类的私有成员;以双下划线开头和结尾的

foo

代表Python

里特殊方法专用的标识,如

init

()

代表类的构造函数。第十二页,共84页。Python保留字符下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。所有Python的关键字只包含小写字母。andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield第十三页,共84页。行和缩进学习Python与其他语言最大的区别就是,Python

的代码块不使用大括号{}来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。以下代码会执行错误:第十四页,共84页。•Python引号Python

可以使用引号(")、双引号(")、三引号("""或""")来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。第十五页,共84页。Python注释python中单行注释采用#开头python

中多行注释使用三个单引号(""")或三个双引号(""")。第十六页,共84页。2.2

Python数据类型标准数据类型Python

定义了一些标准类型,用于存储各种类型的数据。Python有五个标准的数据类型:–Numbers(数字)–String(字符串)–List(列表)–Tuple(元组)–Dictionary(字典)第十七页,共84页。Python数字–数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。当你指定一个值时,Number对象就会被创建。var1

=

1var2

=

10–可以通过使用del语句删除单个或多个对象的引用。例如:del

vardel

var_a,

var_b–Python支持四种不同的数字类型:int(有符号整型)long(长整型[也可以代表八进制和十六进制])float(浮点型)complex(复数)第十八页,共84页。Python字符串–字符串或串(String)是由数字、字母、下划线组成的一串字符。s="a1a2···an"(n>=0)–python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1从右到左索引默认-1开始的,最大范围是字符串开头–如果你要实现从字符串中获取一段子字符串的话,可以使用变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0

开始算起,可以是正数或负数,下标可以为空表示取到头或尾。S="ilovepython‘s[1:5]的结果是love。第十九页,共84页。Python列表List(列表)是Python

中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用[]标识,是python

最通用的复合数据类型。

列表中值的切割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0

开始,从右到左索引默认-1

开始,下标可以为空表示取到头或尾。加号+是列表连接运算符,星号*是重复操作。如下实例:第二十页,共84页。Python元组元组是另一个数据类型,类似于List(列表)。元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。第二十一页,共84页。Python

字典

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用"{}"标识。字典由索引(key)和它对应的值value组成。第二十二页,共84页。Python数据类型转换函数

int(x

[,base])long(x

[,base]

)

float(x)

complex(real

[,imag])

str(x)repr(x)

eval(str)描述将x转换为一个整数将x转换为一个长整数将x转换到一个浮点数创建一个复数将对象x转换为字符串将对象x转换为表达式字符串用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s)

list(s)

set(s)

dict(d)将序列s转换为一个元组将序列s转换为一个列表转换为可变集合创建一个字典。d必须是一个序列(key,value)元组。frozenset(s)

chr(x)

unichr(x)

ord(x)hex(x)转换为不可变集合将一个整数转换为一个字符

将一个整数转换为Unicode字符将一个字符转换为它的整数值将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串第二十三页,共84页。2.3条件和循环Python条件语句Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。–Python程序语言指定任何非0和非空(null)值为true,0或者null为false。–Python

编程中if

语句用于控制程序的执行,基本形式为第二十四页,共84页。Python

循环语句循环语句允许我们执行一个语句或语句组多次。–Python提供了for循环和while循环(在Python中没有do..while循环)循环类型while

循环for

循环

嵌套循环描述在给定的判断条件为true时执行循环体,否则退出循环体。重复执行语句你可以在while循环体中嵌套for循环第二十五页,共84页。演示

Python

while

语句执行过程第二十六页,共84页。2.4

Python函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。定义函数遵循的相关规则函数代码块以def

关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。

return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回

None。第二十七页,共84页。函数语法实例第二十八页,共84页。定义模块好处模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。2.5

Python模块Python

模块(Module),是一个Python文件,以.py

结尾,包含了Python

对象定义和Python语句。第二十九页,共84页。模块的引入模块定义好后,我们可以使用import语句来引入模块,语法如下:import

module1[,

module2[,...

moduleN]比如要引用模块math,就可以在文件最开始的地方用import

math

来引入。在调用math

模块中的函数时,必须这样引用:模块名.函数名第三十页,共84页。2.6

Python文件I/O打印到屏幕最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:第三十一页,共84页。读取键盘输入Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。raw_inputinput二者区别–raw_input会提示你输入任意字符串,然后在屏幕上显示相同的字符串。–input函数和raw_input函数基本类似,但是input

可以接收一个Python表达式作为输入,并将运算结果返回。第三十二页,共84页。打开和关闭文件Python

提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file

对象做大部分的文件操作。open

函数你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。语法:file

object

=

open(file_name

[,

access_mode][,

buffering])–file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。–buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果

取负值,寄存区的缓冲大小则为系统默认。–access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。第三十三页,共84页。close()方法File

对象的close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python

会关闭之前的文件。语法:fileObject.close();第三十四页,共84页。write()方法write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符("\n")。语法:fileObject.write(string);第三十五页,共84页。read()方法read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。语法:fileObject.read([count]);第三十六页,共84页。Python

File(文件)方法序号方法及描述1

file.close()

关闭文件。关闭后文件不能再进行读写操作。2file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件,而不是被动的等待输出缓冲区写入。3file.fileno()

返回一个整型的文件描述符(file

descriptor

FD整型),可以用在如os模块的read方法等一些底层操作上。4file.isatty()

如果文件连接到一个终端设备返回True,否则返回False。5file.next()

返回文件下一行。6file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。7file.readline([size])

读取整行,包括"\n"字符。8file.readlines([sizehint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行,实际读取值可能比sizhint较大,因为需要填充缓冲区。file.seek(offset[,

whence])

设置文件当前位置file.tell()

返回文件当前位置。file.truncate([size])

截取文件,截取的字节通过size指定,默认为当前文件位置。file.write(str)

将字符串写入文件,没有返回值。file.writelines(sequence)

向文件写入一个序列字第符三十串七页列,共表84页,。如果需要换行则要自己加入每行的换行符。——python库利用python进行数据分析工具第三十八页,共84页。重要的Python库NumPy:Numpy(Numerical

Python的简称)是Python科学计算的基础包。–快速高效的多维数组对象ndarray–用于对数组执行元素级计算以及直接对数组执行数学运算的函数–用于读写硬盘上基于数组的数据集的工具–线性代数运算、傅里叶变换、以及随机数生成–用于将C、C++、Fortran代码集成到Python的工具除了为Python提供快速的数组处理能力,NumPy在数据分析方面还作为在算法之间传递数据的容器第三十九页,共84页。Pandas:pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数

Pandas兼具NumPy高性能的数据计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。提供了复杂精细的索引功能、一边更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。Pandas提供了大量适用于金融数据的高性能时间序列功能和工具第四十页,共84页。其他的Python库Matplotlib:matplotlib是最流行的用于绘制数据图标的Python库,实现数据可视化。

IPython:Ipython是Python科学计算标准工具集的组成部分,它将其他所有的东西联系到了一起,为交互是和探索式计算提供了一个强健而高效的环境。SciPy:SciPy是一组专门解决科学计算中各种标准问题域的包的集合,包括Segrate:数值积分例程和韦恩方程式求解器Scipy.linalg:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能Scipy.optimize:函数优化器(最小化器)以及根查找算法Scipy.signal:信号处理工具Scipy.sparse:稀疏矩阵和系数线性系统求解器Scipy.special:SPECFUN(这是一个实现了许多常用数学函数(如伽马函数)的Fortran库)的包装器

Scipy.stats:标准连续的离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计检验方法,以及更好的描述统计法。Scipy.weave:利用内敛C++代码加速数组计算的工具第四十一页,共84页。常用第三方Python库安装和导入安装–下载并安装Anaconda,它附带了预安装的库。Anaconda

Python是完全免费、跨平台、企业级的Python发行大规模数据处理、预测分析和科学计算工具。–PyCharm已经集成NumPy、Pandas、Matplotlib等常用库。导入–import

numpy

as

np–from

socket

import

gethostname,

socket第四十二页,共84页。3.1

NumPy库介绍NumPy是高性能科学计算和数据分析的基础包。部分功能如下:ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数(无需编写循环)。用于读写磁盘数据的工具以及用于操作内存映射文件的工具。线性代数、随机数生成以及傅里叶变换功能。用于集成C、C++、Fortran等语言编写的代码的工具。首先要导入numpy库:import

numpy

as

np第四十三页,共84页。生成函数np.array(

x)np.array(

x,

dtype)np.asarray(

array

)作用将输入数据转化为一个ndarray将输入数据转化为一个类型为type的ndarray将输入数据转化为一个新的(copy)ndarraynp.ones(

N

)np.ones(

N,

dtype)np.ones_like(

ndarray

)生成一个N长度的一维全一ndarray生成一个N长度类型是dtype的一维全一ndarray生成一个形状与参数相同的全一ndarraynp.zeros(

N)np.zeros(

N,

dtype)np.zeros_like(ndarray)生成一个N长度的一维全零ndarray生成一个N长度类型位dtype的一维全零ndarray类似np.ones_like(ndarray)np.empty(

N

)np.empty(

N,

dtype)np.empty(ndarray)生成一个N长度的未初始化一维ndarray生成一个N长度类型是dtype的未初始化一维ndarray类似np.ones_like(ndarray)np.eye(

N

)np.identity(

N

)创建一个N

*

N的单位矩阵(对角线为1,其余为0)np.arange(

num)np.arange(

begin,

end)np.arange(

begin,

end,

step)生成一个从0到num-1步数为1的一维ndarray生成一个从begin到end-1步数为1的一维ndarray生成一个从begin到end-step的步数为step的一维ndarraynp.in1d(ndarray,

[x,y,...])检查ndarray中的元素是否等于[x,y,...]中的一个,返回bool数组第四十四页,共84页。矩阵函数说明np.diag(

ndarray)np.diag(

[x,y,...])以一维数组的形式返回方阵的对角线(或非对角线)元素将一维数组转化为方阵(非对角线元素为0)np.dot(ndarray,

ndarray)矩阵乘法np.trace(

ndarray)计算对角线元素的和排序函数说明np.sort(

ndarray)排序,返回副本np.unique(ndarray)返回ndarray中的元素,排除重复元素之后,并进行排序ersect1d(

ndarray1,

ndarray2)np.union1d(

ndarray1,

ndarray2)np.setdiff1d(

ndarray1,

ndarray2)np.setxor1d(

ndarray1,

ndarray2)返回二者的交集并排序。返回二者的并集并排序。返回二者的差。返回二者的对称差第四十五页,共84页。一元计算函数np.abs(ndarray)np.fabs(ndarray)np.mean(ndarray)np.sqrt(ndarray)np.square(ndarray)np.exp(ndarray)log、log10、log2、log1p说明计算绝对值计算绝对值(非复数)求平均值计算x^0.5计算x^2计算e^x计算自然对数、底为10的log、底为2的log、底为(1+x)的lognp.sign(ndarray)计算正负号:1(正)、0(0)、-1(负)np.ceil(ndarray)np.floor(ndarray)np.rint(ndarray)计算大于等于改值的最小整数计算小于等于该值的最大整数四舍五入到最近的整数,保留dtypenp.modf(ndarray)将数组的小数和整数部分以两个独立的数组方式返回np.isnan(ndarray)返回一个判断是否是NaN的bool型数组np.isfinite(ndarray)np.isinf(ndarray)返回一个判断是否是有穷(非inf,非NaN)的bool型数组返回一个判断是否是无穷的bool型数组cos、cosh、sin、sinh、tan、tanh普通型和双曲型三角函数arccos、arccosh、arcsin、arcsinh、arctan、arctanh反三角函数和双曲型反三角函数np.logical_not(ndarray)计算各元素not

x的真值,相当于-ndarray第四十六页,共84页。多元计算函数说明相加相减乘法除法圆整除法(丢弃余数)次方求模求最大值求最大值(忽略NaN)求最小值求最小值(忽略NaN)将参数2中的符号赋予参数1>np.add(ndarray,

ndarray)np.subtract(ndarray,

ndarray)np.multiply(ndarray,

ndarray)np.divide(ndarray,

ndarray)np.floor_divide(ndarray,

ndarray)np.power(ndarray,

ndarray)np.mod(ndarray,

ndarray)np.maximum(ndarray,

ndarray)np.fmax(ndarray,

ndarray)np.minimun(ndarray,

ndarray)np.fmin(ndarray,

ndarray)np.copysign(ndarray,

ndarray)np.greater(ndarray,

ndarray)np.greater_equal(ndarray,

ndarray)np.less(ndarray,

ndarray)np.less_equal(ndarray,

ndarray)np.equal(ndarray,

ndarray)np.not_equal(ndarray,

ndarray)logical_and(ndarray,

ndarray)logical_or(ndarray,

ndarray)logical_xor(ndarray,

ndarray)np.dot(

ndarray,

ndarray)np.ix_([x,y,m,n],...)>=<<===!=&|^计算两个ndarray的矩阵内积生成一个索引器,用于Fancy

indexing(花式索引)第四十七页,共84页。文件读写说明np.save(string,

ndarray)将ndarray保存到文件名为[string].npy的文件中(无压缩)np.savez(string,

ndarray1,

ndarray2,

...)将所有的ndarray压缩保存到文件名为[string].npy的文件中np.savetxt(sring,

ndarray,

fmt,

newline="\n")将ndarray写入文件,格式为fmtnp.load(string)读取文件名string的文件内容并转化为ndarray对象(或字典对象)np.loadtxt(string,

delimiter)读取文件名string的文件内容,以delimiter为分隔符转化为

ndarray第四十八页,共84页。3.2

Pandas库介绍

pandas

是基于NumPy

的一种工具,该工具是为了解决数据分析任务而创建的。

Pandas

纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。使用方法from

pandas

import

Series,

DataFrameimport

pandas

as

pd第四十九页,共84页。Series常用函数函数说明Series([x,y,...])Series({"a":x,"b":y,...},

index=param1)生成一个SeriesSeries.copy()复制一个SeriesSeries.reindex([x,y,...],

fill_value=NaN)Series.reindex([x,y,...],

method=NaN)Series.reindex(columns=[x,y,...])重返回一个适应新索引的新对象,将缺失值填充为fill_value返回适应新索引的新对象,填充方式为method对列进行重新索引Series.drop(index)丢弃指定项Series.map(f)应用元素级函数排序函数说明Series.sort_index(ascending=True)根据索引返回已排序的新对象Series.order(ascending=True)根据值返回已排序的对象,NaN值在末尾Series.rank(method="average",

ascending=True,

axis=0)为各组分配一个平均排名df.argmax()df.argmin()返回含有最大值的索引位置返回含有最小值的索引位置第五十页,共84页。DataFrame常用函数函数说明DataFrame(dict,columns=dict.index,index=[dict.columnnum])DataFrame(二维ndarray)DataFrame(由数组、列表或元组组成的字典)DataFrame(NumPy的结构化/记录数组)

DataFrame(由Series组成的字典)

DataFrame(由字典组成的字典)

DataFrame(字典或Series的列表)

DataFrame(由列表或元组组成的列表)

DataFrame(DataFrame)DataFrame(NumPy的MaskedArray)构建DataFrame数据矩阵,还可以传入行标和列标每个序列会变成DataFrame的一列。所有序列的长度必须相同类似于“由数组组成的字典”每个Series会成为一列。如果没有显式制定索引,则各Series的索引会被合并成结果的行索引各内层字典会成为一列。键会被合并成结果的行索引。各项将会成为DataFrame的一行。索引的并集会成为

DataFrame的列标。类似于二维ndarray沿用DataFrame类似于二维ndarray,但掩码结果会变成NA/缺失值df.reindex([x,y,...],

fill_value=NaN,

limit)df.reindex([x,y,...],

method=NaN)df.reindex([x,y,...],

columns=[x,y,...],copy=True)返回一个适应新索引的新对象,将缺失值填充为fill_value,最大填充量为limit返回适应新索引的新对象,填充方式为method同时对行和列进行重新索引,默认复制新对象。df.drop(index,

axis=0)丢弃指定轴上的指定项。第五十一页,共84页。汇总统计函数df.count()df.describe()df.min()df.min()df.idxmax(axis=0,

skipna=True)df.idxmin(axis=0,

skipna=True)df.quantile(axis=0)说明非NaN的数量一次性产生多个汇总统计最小值最大值返回含有最大值的index的Series返回含有最小值的index的Series计算样本的分位数df.sum(axis=0,

skipna=True,

level=NaN)df.mean(axis=0,

skipna=True,

level=NaN)df.median(axis=0,

skipna=True,

level=NaN)df.mad(axis=0,

skipna=True,

level=NaN)df.var(axis=0,

skipna=True,

level=NaN)df.std(axis=0,

skipna=True,

level=NaN)df.skew(axis=0,

skipna=True,

level=NaN)df.kurt(axis=0,

skipna=True,

level=NaN)df.cumsum(axis=0,

skipna=True,

level=NaN)df.cummin(axis=0,

skipna=True,

level=NaN)df.cummax(axis=0,

skipna=True,

level=NaN)df.cumprod(axis=0,

skipna=True,

level=NaN)df.diff(axis=0)df.pct_change(axis=0)返回一个含有求和小计的Series返回一个含有平均值的Series返回一个含有算术中位数的Series返回一个根据平均值计算平均绝对离差的Series返回一个方差的Series返回一个标准差的Series返回样本值的偏度(三阶距)返回样本值的峰度(四阶距)返回样本的累计和返回样本的累计最大值返回样本的累计最小值返回样本的累计积返回样本的一阶差分返回样本的百分比数变化第五十二页,共84页。排序函数说明df.sort_index(axis=0,

ascending=True)df.sort_index(by=[a,b,...])根据索引排序计算函数说明df.add(df2,

fill_value=NaN,

axist=1)df.sub(df2,

fill_value=NaN,

axist=1)df.div(df2,

fill_value=NaN,

axist=1)df.mul(df2,

fill_value=NaN,

axist=1)元素级相加,对齐时找不到元素默认用fill_value元素级相减,对齐时找不到元素默认用fill_value元素级相除,对齐时找不到元素默认用fill_value元素级相乘,对齐时找不到元素默认用fill_valuedf.apply(f,

axis=0)将f函数应用到由各行各列所形成的一维数组上df.applymap(f)将f函数应用到各个元素上df.cumsum(axis=0,

skipna=True)累加,返回累加后的dataframe第五十三页,共84页。分析步骤定义数据分析目标:明确挖掘数据的目标和达到的效果。数据取样:采集目标相关样本数据子集,确保数据的相关性、可靠性、有效性。数据探索:对样本数据探索、审核、加工处理,保证样本数据的质量。数据预处理:改善数据质量,包括数据筛选、数据变量转换、缺失值数据处理等。挖掘建模:确定分析问题类型(分类,聚类、关联等),选择相应算法构建模型。模型评价:从建立模型中找到一个最好的模型,并应用到实际业务中。利用python进行数据分析第五十四页,共84页。4.1数据探索数据质量分析主要任务是检查原始数据中是否存在脏数据,即不符合要求,不能直接处理的数据,包括缺失值分析、异常值分析、一致性分析。数据特征分析进分布分析:揭示数据的分布特征和分布类型,通过绘制频率分布表、茎叶图等直观分析

对比分析:把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。统计量分析:用统计量指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面行分析。相关性分析:分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来。第五十五页,共84页。4.2数据预处理数据清洗删除原始数据集中的无关数据、重复数据、平滑噪声数据、无关数据,处理缺失值和异常值。数据集成将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。数据变换主要是对数据进行规范化处理,将数据转换成适当的形式,以适用于挖掘任务和算法的需要。数据规约产生更小但保持数据完整性的新数据集,在规约后的数据集上进行分析和挖掘更有效率。第五十六页,共84页。Python主要数据预处理函数函数名interpolateunique所属扩展库ScipyPandas/NumpyisnullnotnullPCArandom函数功能一维、高维数据插值去除数据中重复元素,得到单值元素列表判断是否是空值判断是否非空值对指标变量矩阵进行主成分分析生成随机矩阵PandasPandasScikit-LearnNumpy第五十七页,共84页。4.3挖掘建模分类与预测

分类:构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别预测:建立两种或两种以上变量间相互依赖的函数模型,然后进行预测和控制实现过程①

学习步,通过归纳分析训练样本集来建立分类模型得到分类规则②

分类步,先用一直的测试样本集评估分类规则的准确率,如果准确率是可以接受的,则使用该模型对未知类标号的待测样本集进行预测第五十八页,共84页。常用的分类与预测算法算法分析回归分析决策树人工神经网络贝叶斯网络支持向量机算法描述回归分析是确定去测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法。包括线性回归、非线性回归、Logistic回归、岭回归、主成分回归、偏最小二乘回归等模型决策树采用自顶向下的递归方式,在内部节点进行属性值的比较,并根据不同的属性值从该节点向下分支,最终得到的叶节点是学习划分的类人工神经神经网络是一种模仿大脑神经网络和功能而建立的信息处理系统,表示神经网络的输入与输出变量之间关系的模型贝叶斯网络又称信度网络,是Bayes方法的扩展,是目前不确定知识表达和推理领域最有效的理论模型之一支持向量机是一种通过魔种非线性映射,把低纬的非线性可分转化为高维的线性可分,在高维空间进行线性分析的算法第五十九页,共84页。主要回归模型分类回归模型名称线性回归算法描述对一个或多个自变量和因变量之间的线性关系进行建模可用最小二乘法求解模型系数非线性回归试用条件因变量与自变量是线性关系因变量与自变量之间不都是线性关系Logistic因变量一般有1和0两种取值岭回归对一个或多个自变量和因变量之间的非线性关系进行建模。如果非线性关系可以通过简单的函数变换转化成线性关系,用线性回归的思想求解;如果不能转化,用非线性最小二乘法方法求解是广义线性回归模型的特例,利用Logistic函数将因变量的取值范围控制在0和1之间,表示取值为1的概率是一种改进最小二乘估计的方法主成分回归参与建模的自变量之间具有多重共线性参与建模的自变量之间具有多重共线性主成分回归是根据主成分分析的思想提出来,是对最小二乘法的一种改进,它是参数估计的一种有偏估计。可以消除自变量之间的多重共线性第六十页,共84页。对某银行在降低贷款拖欠率的数据进行逻辑回归建模,数据示例如下表应用举例一第六十一页,共84页。Python代码第六十二页,共84页。运行结果结果分析

随机逻辑回归剔除变量,分别剔除了x2、x8、x1、x5,最终构建模型包含的变量为常量

x3、x4、x6、x7。在建立逻辑回归模型时,使用了默认的阈值0.25。第六十三页,共84页。聚类分析–在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。常用聚类方法类别包括的主要算法划分方法K-Means算法、K-MEDOIDS算法、CLARANS算法层次分析法BIRCH算法、CURE算法、CHAMELEON算法基于密度的方法DBCSCAN算法、DENCLUE算法、OPTICS算法基于网格的方法STING算法、CLIOUE算法、WAVE——CLUSTER算法基于模型的方法统计学方法、神经网络方法第六十四页,共84页。常用聚类分析算法算法名称

温馨提示

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

评论

0/150

提交评论