Python数据分析.pptx
Python学习,数据分析与数据挖掘,认识Python,Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public License)协议Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C+)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型,然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C+重写,而后封装为Python可以调用的扩展类库。,Python优点有哪些,Python是一种开源的、解析性的,面向对象的编程语言Python使用一种优雅的语法,可读性强Python具有丰富的库,可以处理各种工作Python支持类和多层继承等的面向对象编程技术Python可运行在多种计算机平台和操作系统中,如Unix、Windows、MacOS、Ubuntu、OS/2等等,为什么选择Python进行数据分析,在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只是用Python这一种语言去构建以数据为中心的应用程序。作为一个科学计算平台,Python的成功源于能够轻松的集成C、C+以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。,课程内容,Python环境搭建 1.1 python版本选择 1.2 python 安装2.Python基础 2.1 python基础语法 2.2 python数据类型 2.3 条件和循环 2.4 Python 函数 2.5 Python 模块 2.6 Python文件I/O3.Python库介绍 3.1 NumPy库介绍 3.2 Pandas库介绍 4.数据处理与分析 4.1 数据探索 4.2 数据预处理 4.3 挖掘建模5.实例分析 5.1 Titanic数据集分析 5.2 餐饮客户价值分析,1.1 Python环境搭建,Python2.X和Python3.XPython的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容,许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6,Python 2.7来执行。In summary:Python 2.x is legacy,Python 3.x is the present and future of the language,1.2 Python安装,Unix&Linux平台安装Python打开WEB浏览器访问http:/www.python.org/download/选择适用于Unix/Linux的源码压缩包。下载及解压压缩包。如果你需要自定义一些选项修改Modules/Setup 执行./configure 脚本 make make install,Window平台安装Python打开WEB浏览器访问http:/www.python.org/download/在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件,XYZ 为你要安装的版本号。要使用安装程序 python-XYZ.msi,Windows系统必须支持Microsoft Installer 2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持MSI。Windows XP和更高版本已经有MSI,很多老机器也可以安装MSI。下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认的设置一直点击下一步直到安装完成即可。,集成开发环境选择,PyCharmPyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、Windows、Linux 系统。PyCharm 功能:调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制PyCharm 下载地址:https:/,Pycharm软件界面,编写我的第一个Python程序,Hello World程序简单的计算器,2.1 Python基本语法,Python标识符在 Python 里,标识符由字母、数字、下划线组成。在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。Python 中的标识符是区分大小写的。Python 可以同一行显示多条语句,方法是用分号;分开。以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import*而导入以双下划线开头的 _foo 代表类的私有成员;以双下划线开头和结尾的 _foo_ 代表 Python 里特殊方法专用的标识,如 _init_()代表类的构造函数。,Python 保留字符下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。所有 Python 的关键字只包含小写字母。,行和缩进学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。以下代码会执行错误:,Python引号Python 可以使用引号()、双引号()、三引号(或)来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。,Python注释python中单行注释采用#开头python 中多行注释使用三个单引号()或三个双引号()。,2.2 Python数据类型,标准数据类型Python 定义了一些标准类型,用于存储各种类型的数据。Python有五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典),Python数字数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。当你指定一个值时,Number对象就会被创建。可以通过使用del语句删除单个或多个对象的引用。例如:Python支持四种不同的数字类型:int(有符号整型)long(长整型也可以代表八进制和十六进制)float(浮点型)complex(复数),var1=1var2=10,del vardel var_a,var_b,Python字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1从右到左索引默认-1开始的,最大范围是字符串开头如果你要实现从字符串中获取一段子字符串的话,可以使用变量 头下标:尾下标,就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。,s=a1a2an(n=0),S=ilovepythons1:5的结果是love。,Python列表List(列表)是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用 标识,是 python 最通用的复合数据类型。列表中值的切割也可以用到变量 头下标:尾下标,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认-1 开始,下标可以为空表示取到头或尾。加号+是列表连接运算符,星号*是重复操作。如下实例:,Python元组元组是另一个数据类型,类似于List(列表)。元组用()标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。,Python 字典字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用 标识。字典由索引(key)和它对应的值value组成。,Python数据类型转换,2.3 条件和循环,Python 条件语句Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。Python 编程中 if 语句用于控制程序的执行,基本形式为,Python 循环语句循环语句允许我们执行一个语句或语句组多次。Python提供了for循环和while循环(在Python中没有do.while循环),演示 Python while 语句执行过程,2.4 Python 函数,定义函数遵循的相关规则函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串用于存放函数说明。函数内容以冒号起始,并且缩进。return 表达式 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。,函数语法实例,2.5 Python 模块,定义模块好处模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。,Python 模块(Module),是一个 Python 文件,以.py 结尾,包含了 Python 对象定义和Python语句。,模块的引入模块定义好后,我们可以使用 import 语句来引入模块,语法如下:比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:,import module1,module2,.moduleN,模块名.函数名,2.6 Python文件I/O,打印到屏幕最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:,读取键盘输入Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。二者区别raw_input会提示你输入任意字符串,然后在屏幕上显示相同的字符串。input函数和 raw_input函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。,raw_inputinput,打开和关闭文件,open 函数 你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。语法:file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。,Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。,file object=open(file_name,access_mode,buffering),close()方法File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。语法:,fileObject.close();,write()方法 write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符(n)。语法:,fileObject.write(string);,read()方法 read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。语法:,fileObject.read(count);,Python File(文件)方法,python库,利用python进行数据分析工具,重要的Python库,NumPy:Numpy(Numerical Python的简称)是Python科学计算的基础包。快速高效的多维数组对象ndarray用于对数组执行元素级计算以及直接对数组执行数学运算的函数用于读写硬盘上基于数组的数据集的工具线性代数运算、傅里叶变换、以及随机数生成用于将C、C+、Fortran代码集成到Python的工具除了为Python提供快速的数组处理能力,NumPy在数据分析方面还作为在算法之间传递数据的容器,Pandas:pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数Pandas兼具NumPy高性能的数据计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。提供了复杂精细的索引功能、一边更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。Pandas提供了大量适用于金融数据的高性能时间序列功能和工具,其他的Python库,Matplotlib:matplotlib是最流行的用于绘制数据图标的Python库,实现数据可视化。IPython:Ipython是Python科学计算标准工具集的组成部分,它将其他所有的东西联系到了一起,为交互是和探索式计算提供了一个强健而高效的环境。SciPy:SciPy是一组专门解决科学计算中各种标准问题域的包的集合,包括Scipy.integrate:数值积分例程和韦恩方程式求解器Scipy.linalg:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能Scipy.optimize:函数优化器(最小化器)以及根查找算法Scipy.signal:信号处理工具Scipy.sparse:稀疏矩阵和系数线性系统求解器Scipy.special:SPECFUN(这是一个实现了许多常用数学函数(如伽马函数)的Fortran库)的包装器Scipy.stats:标准连续的离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计检验方法,以及更好的描述统计法。Scipy.weave:利用内敛C+代码加速数组计算的工具,常用第三方Python库安装和导入,安装下载并安装Anaconda,它附带了预安装的库。Anaconda Python 是完全免费、跨平台、企业级的Python发行大规模数据处理、预测分析和科学计算工具。PyCharm已经集成NumPy、Pandas、Matplotlib等常用库。导入import numpy as npfrom socket import gethostname,socket,3.1 NumPy库介绍,NumPy是高性能科学计算和数据分析的基础包。部分功能如下:ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数(无需编写循环)。用于读写磁盘数据的工具以及用于操作内存映射文件的工具。线性代数、随机数生成以及傅里叶变换功能。用于集成C、C+、Fortran等语言编写的代码的工具。首先要导入numpy库:import numpy as np,3.2 Pandas库介绍,pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。使用方法from pandas import Series,DataFrameimport pandas as pd,Series常用函数,DataFrame常用函数,分析步骤定义数据分析目标:明确挖掘数据的目标和达到的效果。数据取样:采集目标相关样本数据子集,确保数据的相关性、可靠性、有效性。数据探索:对样本数据探索、审核、加工处理,保证样本数据的质量。数据预处理:改善数据质量,包括数据筛选、数据变量转换、缺失值数据处理等。挖掘建模:确定分析问题类型(分类,聚类、关联等),选择相应算法构建模型。模型评价:从建立模型中找到一个最好的模型,并应用到实际业务中。,利用python进行数据分析,4.1 数据探索,数据质量分析 主要任务是检查原始数据中是否存在脏数据,即不符合要求,不能直接处理的数据,包括缺失值分析、异常值分析、一致性分析。数据特征分析分布分析:揭示数据的分布特征和分布类型,通过绘制频率分布表、茎叶图等直观分析对比分析:把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。统计量分析:用统计量指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面 进行分析。相关性分析:分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来。,4.2 数据预处理,数据清洗删除原始数据集中的无关数据、重复数据、平滑噪声数据、无关数据,处理缺失值和异常值。数据集成将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。数据变换主要是对数据进行规范化处理,将数据转换成适当的形式,以适用于挖掘任务和算法的需要。数据规约产生更小但保持数据完整性的新数据集,在规约后的数据集上进行分析和挖掘更有效率。,Python主要数据预处理函数,4.3 挖掘建模,分类与预测分类:构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别预测:建立两种或两种以上变量间相互依赖的函数模型,然后进行预测和控制实现过程学习步,通过归纳分析训练样本集来建立分类模型得到分类规则分类步,先用一直的测试样本集评估分类规则的准确率,如果准确率是可以接受的,则使用该模型对未知类标号的待测样本集进行预测,常用的分类与预测算法,主要回归模型分类,对某银行在降低贷款拖欠率的数据进行逻辑回归建模,数据示例如下表,应用举例一,Python代码,运行结果结果分析随机逻辑回归剔除变量,分别剔除了x2、x8、x1、x5,最终构建模型包含的变量为常量x3、x4、x6、x7。在建立逻辑回归模型时,使用了默认的阈值0.25。,聚类分析在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。常用聚类方法,常用聚类分析算法,K-Means聚类算法,算法过程从N个样本数据中随机选取K个对象作为初始的聚类中心分别计算每个样本到各个聚类中心的距离,将对象分配到距离不最近的聚类中所有对象分配完成后,重新计算K个聚类的中心与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转第二步,否则转下一步当质心不发生变化时停止并输出聚类不结果,应用举例二,找出下列谁是学霸?,使用Kmeans对学生成绩进行聚类运行结果结论大明、小鹏、大鹏、大萌是学霸,5.1 Titanic数据集分析,前期准备数据下载https:/python3.6+anaconda 或 使用集成开发环境 pycharm数据格式,PassengerId=乘客ID Survived=是否生还 Pclass=乘客等级(1/2/3等舱位)Name=乘客姓名 Sex=性别 Age=年龄 SibSp=堂兄弟/妹个数 Parch=父母与小孩个数 Ticket=船票信息 Fare=票价 Cabin=客舱 Embarked=登船港口,1、导入数据&查看基本信息运行结果,从数据集的基本信息可以看出,Age Cabin Embarked 是存在缺失值的,其中Cabin字段缺失值过多。常用的方法是去除和补齐,数值型的数据是可以根据统计学的方法或者机器学习的方法将其进行补齐的,2、分析乘客存活率与各单变量之间的关系查看总存活率输出结果,survived_rate=float(dfSurvived.sum()/dfSurvived.count()Print(survived_rate:,survived_rate),survived_rate:0.383838383838,舱位与存活率关系运行结果,性别与存活率关系运行结果,年龄与存活率关系运行结果,3、分析乘客存活率与复合变量之间的关系根据上述变量分析,舱位和性别对存活率影响都很大,但哪一个占的比重更大呢?将舱位和性别整合为复合变量进行分析输出结果结果分析船舱等级越高,存活率越高女性存活率高于男性,部分餐饮客户的消费行为特征数据如下,根据数据将客户分成不同客户群,并评价这些客户群的价值,5.2 餐饮客户价值分析,Python代码,运行结果,分群一结果分析分群一的R间隔相对较小,主要集中在030天,消费次数集中在1025次,消费金额在5002000,分群二结果分析分群二的R间隔分布在030天,消费次数集中在012次,消费金额在01800,分群三结果分析分群三的R间隔较大,间隔分布在3080天,消费次数集中在015次,消费金额在02000,对比分析分群1的时间间隔较短,消费次数多,而且消费金额较大,时高消费、高价值人群。分群二的时间间隔、消费次数和消费金额处于中等水平,代表着一般客户。分群三的时间间隔较长,消费次数较少,消费金额也不是特别高,是价值较低的客户群体。,谢谢,