




已阅读5页,还剩101页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PythonPandas数据分析技术与编程方法,Python入门开发环境IDEpandas数据分析库数据规整化数据聚合与分组实例分析泰坦尼克之灾,目录,Python是自由软件丰硕成果之一创始人GuidovanRossum时间地点1989年圣诞节期间在阿姆斯特丹创造名字来源大蟒蛇飞行马戏团爱好者渊源从ABC发展而来主要受Modula-3的影响结合了Unixshell和C的习惯,Python的历史,Python是一种面向对象的解释性语言免费的可移植的可扩展的简单的万能的,Python的语言特点,Python是一种语法简单的脚本语言运行方式命令行、交互式、图形集成环境面向对象甚至还支持异常处理模块和包与Java类似,还开发了JPython语言扩展可以用C/C+/Java编写新的语言模块丰富的库数据分析/科学计算/机器学习/GUI/.,Python的语法特点,它使程序员的生活更有趣简单易学功能丰富谁在使用Python呢?GoogleNASA豆瓣.,Python的魅力,当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。,Python解释器,CPython当我们从Python官方网站下载并安装好Python2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。,Python解释器,IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。CPython用作为提示符,而IPython用In序号:作为提示符。,Python解释器,PyPyPyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。,Python解释器,JythonJython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。,Python解释器,IronPythonIronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。,Python解释器,OS:64位windows7Version:python-2.7.11.msi注意:1.安装时勾选addtoenvironment,默认安装pip2.添加pip环境变量path=C:Python27ScriptsPyPI(PythonPackageIndex)是python官方的第三方库的仓库,pip是一个安装和管理Python包的工具。,Windows下Python安装与配置,pythonshellIDLE(PythonGUI)ipythonNotepad+PyCharm,Python开发环境,eclipse+PyDevIDE配置PyDevInterpreter打开Window-Preferences.对话框,选择PyDev-InterpreterPython,点击New,从Python的安装路径下选择Python.exe。也可以点AutoConfig自动配置,会搜索安装好的python自动配置。,Python开发环境,Python开发环境,Python文件不支持中文注释问题:#coding=#!/usr/bin/python#-*-coding:-*-#!/usr/bin/python#vim:setfileencoding=:eg:#coding=utf-8,特别注意:Python文件编码声明,Python中行首的空白是重要的,它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。if0=1:printWeareinaworldofarithmeticpainprintThankyouforplaying将输出Thankyouforplayingif0=1:printWeareinaworldofarithmeticpainprintThankyouforplaying将不会有输出,特别注意:缩进,可以使用空格或制表符产生缩进,两个空格或四个空格都是可以的,不过一般建议使用一个制表符TAB产生缩进,你的程序应该固定使用一种缩进规则。Python代码缩进决定了代码的逻辑关系,而不仅仅是为了好看!,特别注意:缩进,pandas数据分析numpy科学计算包scipy科学计算包matplotlib画图/表scikit-learn机器学习库Seaborn数据可视化工具包,常用扩展包,Python的一个数据分析包AQRCapitalManagement于2008年4月开发2009年底开源目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。约定俗成的导入惯例:In1:frompandasimportSeries,DataFrameIn2:importpandasaspd,Pandas,1.SeriesSeries是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴标一般指索引。SeriesNumpy中的一维arrayPython基本数据结构List区别:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。,Pandas中的数据结构,2.DataFrameDataFrame是二维标记数据结构,列可以是不同的数据类型。它是最常用的pandas对象,像Series一样可以接收多种输入:lists、dicts、series和DataFrame等。初始化对象时,除了数据还可以传index和columns这两个参数。,Pandas中的数据结构,3.PanelPanel很少使用,然而是很重要的三维数据容器。Paneldata源于经济学,也是pan(el)-da(ta)-s的来源。,Pandas中的数据结构,4.Panel4DPanel4D是像Panel一样的4维容器,作为N维容器的一个测试。Panel4D是Panel的一个子集,因此Panel的大多数方法可用于4D,但以下方法不可用:join,to_excel,to_frame,to_sparse,groupby。,Pandas中的数据结构,5.PanelNDPanelND是一个拥有factory集合,可以创建像Panel4D一样N维命名容器的模块。,Pandas中的数据结构,通过传递一个list对象来创建Series,默认创建整型索引;In4:obj=Series(4,7,-5,3)创建一个带有索引来确定每一个数据点的Series;In8:obj2=Series(4,7,-5,3,index=d,b,a,c)如果你有一些数据在一个Python字典中,你可以通过传递字典来创建一个Series;In11:sdata=Ohio:35000,Texas:71000,Oregon:16000,Utah:5000In12:obj3=Series(sdata)In14:states=California,Ohio,Oregon,TexasIn15:obj4=Series(sdata,index=states),Series相关操作创建,通过一个布尔数组过滤,纯量乘法,或使用数学函数,将会保持索引和值间的关联:,Series相关操作,Series是一个定长的,有序的字典,因为它把索引和值映射起来了。它可以适用于许多期望一个字典的函数:,Series相关操作,在pandas中用函数isnull和notnull来检测数据丢失:pd.isnull(obj4)pd.notnull(obj4)Series也提供了这些函数的实例方法:obj4.isnull(),Series相关操作,Series的一个重要功能是在算术运算中它会自动对齐不同索引的数据:,Series相关操作,Series对象本身和它的索引都有一个name属性,它和pandas的其它一些关键功能整合在一起:,Series相关操作,从坐标轴删除条目,drop方法将会返回一个新的对象并从坐标轴中删除指定的一个或多个值:,Series相关操作,Series除了可以使用索引值,也可以仅使用整数来索引:,Series相关操作,直方图:,Series相关操作,字符串方法:,Series相关操作,通过传递一个NumPyarray,时间索引以及列标签来创建一个DataFrame;用一个相等长度列表的字典;它的索引会自动分配,并且对列进行了排序;如果设定了一个列的顺序,DataFrame的列将会精确的按照所传递的顺序排列;,DataFrame相关操作创建,通过一个嵌套的字典格式创建DataFrame:外部键会被解释为列索引,内部键会被解释为行索引;内部字典的键被结合并排序来形成结果的索引;可以对结果转置:,DataFrame相关操作创建,DataFrame中的一列可以通过字典记法或属性来检索:注意,返回的Series包含和DataFrame相同的索引,并它们的name属性也被正确的设置了。,DataFrame相关操作检索,为了使DataFrame可以在行上进行标签索引,将介绍特殊的索引字段ix。这使你可以从DataFrame选择一个行和列的子集,这也是一种不是很冗长的重新索引的方法。,DataFrame相关操作检索,对于DataFrame,有很多方法来选择和重排包含在pandas对象中的数据。,DataFrame相关操作检索,列可以通过赋值来修改。例如,空的debt列可以通过一个纯量或一个数组来赋值;注意:通过列表或数组给一列赋值时,所赋的值的长度必须和DataFrame的长度相匹配。使用Series来赋值,它会代替在DataFrame中精确匹配的索引的值,并在所有的空洞插入丢失数据NaN;给一个不存在的列赋值,将会创建一个新的列;,DataFrame相关操作赋值,pandas的最重要的特性之一是在具有不同索引的对象间进行算术运算。当把对象加起来时,如果有任何索引对不相同的话,在结果中将会把各自的索引联合起来。,DataFrame相关操作算术运算,在不同索引对象间的算术运算,当一个轴标签在另一个对象中找不到时,你可能想要填充一个特定的值,如0。Howtodoit?,DataFrame相关操作,对于DataFrame,可以从任何坐标轴删除索引值:像字典一样del关键字将会删除列:,DataFrame相关操作,写入excel文件:df.to_excel(foo.xlsx,sheet_name=Sheet1)从excel文件中读取:pd.read_excel(foo.xlsx,Sheet1,index_col=None,na_values=NA)写入csv文件:df.to_csv(foo.csv)从csv文件中读取:pd.read_csv(foo.csv)写入HDF5存储:df.to_hdf(foo.h5,df)从HDF5存储中读取:pd.read_hdf(foo.h5,df),DataFrame相关操作导入和保存数据,首先,作为一个激发性的例子,考虑一个二维数组和它的一个行间的差分:这被称为广播(broadcasting)。,DataFrame和Series间的操作,在一个DataFrame和一个Series间的操作是类似的:,DataFrame和Series间的操作,pandas的索引对象用来保存坐标轴标签和其它元数据(如坐标轴名或名称)。构建一个Series或DataFrame时任何数组或其它序列标签在内部转化为索引:,pandas的索引对象,索引对象是不可变的,不能由用户改变:索引对象的不可变性非常重要,这样它可以在数据结构中结构中安全的共享:,pandas的索引对象,pandas中的主要索引对象:,pandas的索引对象,除了类似于阵列,索引也有类似固定大小集合一样的功能:,pandas的索引对象,每个索引都有许多关于集合逻辑的方法和属性,且能够解决它所包含的数据的常见问题。,pandas的索引对象,reindex,意味着使数据符合一个新的索引来构造一个新的对象。在Series上调用reindex重排数据,使得它符合新的索引,如果那个索引的值不存在就引入缺失数据值:,pandas对象的一个关键方法重新索引,为了对时间序列这样的数据排序,当重建索引的时候可能想要对值进行内插或填充。method选项可以是你做到这一点,使用一个如ffill的方法来向前填充值:reindex的method(内插)选项:,pandas对象的一个重要功能重新索引,对于DataFrame,reindex可以改变(行)索引,列或两者。当只传入一个序列时,结果中的行被重新索引了:,pandas对象的一个重要功能重新索引,使用columns关键字可以使列重新索引:,pandas对象的一个重要功能重新索引,一次可以对两个重新索引,可是插值只在行侧(0坐标轴)进行:,pandas对象的一个重要功能重新索引,使用带标签索引的ix可以把重新索引做的更简单:,pandas对象的一个重要功能重新索引,reindex函数的参数:,pandas对象的一个重要功能重新索引,Pandas提供了大量的方法能够轻松的对Series,DataFrame和Panel对象进行各种符合各种逻辑关系的合并操作。ConcatMerge(类似于SQL类型的合并)Append(将一行连接到一个DataFrame上),数据规整化合并,concat,数据规整化合并,merge默认情况下,merge做的是“inner”连接,结果中的键是交集。其他方式还有“left”,“right”以及“outer”。,数据规整化合并,append,数据规整化合并,Stack/unstack,数据规整化重塑,数据透视表,数据规整化重塑,DataFrame中常常会出现重复行,DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行;还有一个drop_duplicated方法,它返回一个移除了重复行的DataFrame:,数据规整化清理,执行描述性统计:df.mean()在其它轴上进行描述性统计:df.mean(1),数据聚合与分组,对数据应用函数:,数据聚合与分组,对于”groupby”操作,我们通常是指以下一个或多个操作步骤:(Splitting)按照一些规则将数据分为不同的组;(Applying)对于每组数据分别执行一个函数;(Combining)将结果组合到一个数据结构中;,数据聚合与分组,分组并对每个分组执行sum函数:通过多个列进行分组形成一个层次索引,然后执行函数:,数据聚合与分组,泰坦尼克号问题之背景:就是大家都熟悉的JackandRose的故事,豪华游艇快沉了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都上,副船长发话了ladyandkidfirst!,所以是否获救其实并非随机,而是基于一些背景有rank先后的。训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况。这是一个二分类问题,是logisticregression所能处理的范畴。,实例逻辑回归Kaggle泰坦尼克之灾,从机器学习问题角度监督学习无监督学习半监督学习,机器学习算法概览,从算法的功能角度回归算法(RegressionAlgorithms)基于实例的算法(Instance-basedAlgorithms)决策树类算法(DecisionTreeAlgorithms)贝叶斯类算法(BayesianAlgorithms)聚类算法(ClusteringAlgorithms)人工神经网络类算法(ArtificialNeuralNetworkAlgorithms)深度学习(DeepLearningAlgorithms)降维算法(DimensionalityReductionAlgorithms)模型融合算法(EnsembleAlgorithms),机器学习算法概览,机器学习算法概览,预测结果如果是离散值(比如邮件分类问题中的垃圾邮件/普通邮件,比如用户会/不会购买某商品),那么我们把它叫做分类问题(classificationproblem);朴素贝叶斯、逻辑回归、支持向量机等预测结果是连续值(比如房价,股票价格等等),那么我们把它叫做回归问题(regressionproblem)。线性回归等,机器学习分类与回归,逻辑回归监督学习分类问题逻辑回归的成功之处在于,将原本输出结果通过sigmoid函数映射到(0,1),从而完成概率的估测。逻辑回归能够较好地把两类样本点分隔开,解决分类问题。,机器学习逻辑回归,泰坦尼克号问题之背景:就是大家都熟悉的JackandRose的故事,豪华游艇快沉了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都上,副船长发话了ladyandkidfirst!,所以是否获救其实并非随机,而是基于一些背景有rank先后的。训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况。这是一个二分类问题,是logisticregression所能处理的范畴。,实例逻辑回归Kaggle泰坦尼克之灾,importpandasaspd#数据分析importnumpyasnp#科学计算frompandasimportSeries,DataFramedata_train=pd.read_csv(/Users/WGW/Titanic_data/Train.csv)data_train,实例逻辑回归Kaggle泰坦尼克之灾,data_train如下所示:,实例逻辑回归Kaggle泰坦尼克之灾,训练数据中总共有891名乘客,but有些属性的数据不全,比如说:Age(年龄)属性只有714名乘客有记录Cabin(客舱)更是只有204名乘客是已知的,实例逻辑回归Kaggle泰坦尼克之灾,我们用下列的方法,得到数值型数据的一些分布:mean字段告诉我们,大概0.383838的人最后获救了,平均乘客年龄大概是29.7岁(计算这个时候会略掉无记录的),实例逻辑回归Kaggle泰坦尼克之灾,统计乘客各属性分部:,实例逻辑回归Kaggle泰坦尼克之灾,实例逻辑回归Kaggle泰坦尼克之灾,1、被救的人300多点,不到半数;2、3等舱乘客非常多;3、遇难和获救的人年龄似乎跨度都很广;4、3个不同的舱年龄总体趋势似乎也一致,3等舱乘客20岁多点的人最多,1等舱40岁左右的最多;5、登船港口人数按照S、C、Q递减,而且S远多于另外两港口。,实例逻辑回归Kaggle泰坦尼克之灾,可能会有一些想法了:1、不同舱位/乘客等级可能和财富/地位有关系,最后获救概率可能会不一样?2、年龄对获救概率也一定是有影响的,毕竟前面说了,副船长还说小孩和女士先走呢?3、和登船港口是不是有关系呢?也许登船港口不同,人的出身地位不同?,实例逻辑回归Kaggle泰坦尼克之灾,属性与获救结果的关联统计:,实例逻辑回归Kaggle泰坦尼克之灾,实例逻辑回归Kaggle泰坦尼克之灾,实例逻辑回归Kaggle泰坦尼克之灾,实例逻辑回归Kaggle泰坦尼克之灾,实例逻辑回归Kaggle泰坦尼克之灾,实例逻辑回归Kaggle泰坦尼克之灾,先把Cabin缺失与否作为条件(虽然这部分信息缺失可能并非未登记,丢失了而已?所以这样做未必妥当),先在有无Cabin信息这个粗粒度上看看Survived的情况。,实例逻辑回归Kaggle泰坦尼克之灾,大体数据的情况看了一遍,对感兴趣的属性也有个大概的了解了。下一步干啥?处理处理这些数据(featureengineering过程),为机器学习建模做点准备吧,实例逻辑回归Kaggle泰坦尼克之灾,Cabin:按Cabin有无数据,将这个属性处理成Yes和No两种类型吧。Age:通常遇到缺值的情况,我们会有几种常见的处理方式。,实例逻辑回归Kaggle泰坦尼克之灾,缺失数据常用处理方式:1、如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 庆阳市七下考试题及答案
- 湖北成考试题及答案本科
- 2025集团法务招聘考试真题及答案
- 2025化学教师考试真题及答案
- 难点解析人教版八年级上册物理光现象《光的直线传播》同步练习试卷(解析版含答案)
- 徐州二中考试题目及答案
- 2025年消防执业资格考试题库(消防应急救援装备)基础理论试题及答案
- 品牌维权技术路径-洞察与解读
- 技术驱动并购策略-洞察与解读
- 2025年《劳动关系协调员》考试复习题及参考答案
- 2025年及未来5年中国羊奶粉行业市场调研分析及投资战略咨询报告
- 学校物业委托管理服务合同7篇
- 2025-2026学年人教版二年级上册数学第三单元测试卷(含答案)(三套)
- 《守望成长法治护航》法制教育主题班会
- 桡骨骨折课件教学
- 2025年特种作业类冶金煤气作业理论知识-理论知识参考题库含答案解析(5卷)
- 2025-2030中国节能玻璃材料市场发展动态及竞争格局研究报告
- 数据标注课件
- 2025公安辅警招聘知识考试题(含答案)
- 劳动课包包子课件
- 教师教育心理学考试试题及答案
评论
0/150
提交评论