python pandas 讲解ppt_python-pandas-数据分析技术与编程方法讲座ppt

PPT内容

这是python-pandas-数据分析技术与编程方法讲座ppt,包括了Python入门,开发环境IDE,pandas数据分析库,数据规整化,数据聚合与分组,实例分析——泰坦尼克之灾等内容,欢迎点击下载。

Python Pandas                    数据分析技术与编程方法

目录

Python入门

开发环境IDE

pandas数据分析库

数据规整化

数据聚合与分组

实例分析——泰坦尼克之灾

Python的历史

Python是自由软件丰硕成果之一

创始人       Guido van Rossum

时间地点    1989年圣诞节期间在阿姆斯特丹创造

名字来源    大蟒蛇飞行马戏团爱好者

渊源           从ABC发展而来

主要受Modula-3的影响

结合了Unix shell和C的习惯

Python的语言特点

Python是一种面向对象的解释性语言

免费的

可移植的

可扩展的

简单的

万能的

Python的语法特点

Python是一种语法简单的脚本语言

运行方式   命令行、交互式、图形集成环境

面向对象   甚至还支持异常处理

模块和包   与Java类似,还开发了JPython

语言扩展   可以用C/C++/Java编写新的语言模块

丰富的库   数据分析/科学计算/机器学习/GUI/

... ...

Python的魅力

它使程序员的生活更有趣

简单易学

功能丰富

谁在使用Python呢?

Google

NASA

豆瓣

......

Python解释器

当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

Python解释器

CPython

当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。

Python解释器

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

Python解释器

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

Python解释器

Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

Python解释器

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

Windows下 Python 安装与配置

OS:       64位 windows 7

Version:python-2.7.11.msi

注意:

1.安装时勾选add to environment,默认安装pip

2.添加pip环境变量 path = C:\Python27\Scripts

PyPI (PythonPackageIndex)是python官方的第三方库的仓库,pip是一个安装和管理Python包的工具。

Python开发环境

python shell

IDLE(Python GUI)

ipython

Notepad++

PyCharm

Python开发环境

eclipse +PyDev IDE

配置PyDev Interpreter

打开 Window->Preferences.对话框,选择" PyDev"->"Interpreter Python", 点击New,从Python的安装路径下选择Python.exe。

也可以点Auto Config自动配置,会搜索安装好的python自动配置。

Python开发环境

特别注意:Python文件编码声明

Python文件不支持中文注释问题:

# coding=

#!/usr/bin/python

# -*- coding: -*-

#!/usr/bin/python

# vim: set fileencoding= :

eg:

# coding=utf-8

特别注意:缩进

Python中行首的空白是重要的,它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。

if 0==1:

print 'We are in a world of arithmetic pain'

print 'Thank you for playing'

将输出Thank you for playing

if 0==1:

print 'We are in a world of arithmetic pain'

print 'Thank you for playing'

将不会有输出

特别注意:缩进

可以使用空格或制表符产生缩进,两个空格或四个空格都是可以的,不过一般建议使用一个制表符TAB产生缩进,你的程序应该固定使用一种缩进规则。

Python代码缩进决定了代码的逻辑关系,而不仅仅是为了好看!!!

常用扩展包

pandas       数据分析

numpy        科学计算包

scipy           科学计算包

matplotlib  画图/表

scikit-learn 机器学习库

Seaborn     数据可视化工具包

Pandas

Python的一个数据分析包

AQR Capital Management于2008年4月开发

2009年底开源

目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。

约定俗成的导入惯例:

In [1]: from pandas import Series, DataFrame

In [2]: import pandas as pd

Pandas中的数据结构

1.Series

Series是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴标一般指索引。

Series

Numpy中的一维array

Python基本数据结构List

区别:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。

Pandas中的数据结构

2. DataFrame

DataFrame是二维标记数据结构,列可以是不同的数据类型。它是最常用的pandas对象,像Series一样可以接收多种输入:lists、dicts、series和DataFrame等。初始化对象时,除了数据还可以传index和columns这两个参数。

Pandas中的数据结构

3. Panel

Panel很少使用,然而是很重要的三维数据容器。Panel data源于经济学,也是pan(el)-da(ta)-s的来源。

Pandas中的数据结构

4. Panel4D

Panel4D是像Panel一样的4维容器,作为N维容器的一个测试。

Panel4D是Panel的一个子集,因此Panel的大多数方法可用于4D,但以下方法不可用:join, to_excel, to_frame, to_sparse, groupby。

Pandas中的数据结构

5. PanelND

PanelND是一个拥有factory集合,可以创建像Panel4D一样N维命名容器的模块。

Series相关操作——创建

通过传递一个list对象来创建Series,默认创建整型索引;

In [4]: obj = Series([4, 7, -5, 3])

创建一个带有索引来确定每一个数据点的Series ;

In [8]: obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])

如果你有一些数据在一个Python字典中,你可以通过传递字典来创建一个Series;

In [11]: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

In [12]: obj3 = Series(sdata)

In [14]: states = ['California', 'Ohio', 'Oregon', 'Texas']

In [15]: 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相关操作

字符串方法:

DataFrame相关操作——创建

通过传递一个NumPy array,时间索引以及列标签来创建一个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。How to do it?

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 和 Series 间的操作

首先,作为一个激发性的例子,考虑一个二维数组和它的一个行间的差分:

这被称为 广播 (broadcasting)。

DataFrame 和 Series 间的操作

在一个DataFrame和一个Series间的操作是类似的:

pandas的索引对象

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提供了大量的方法能够轻松的对Series,DataFrame和Panel对象进行各种符合各种逻辑关系的合并操作。

Concat

Merge (类似于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)

数据聚合与分组

对数据应用函数:

数据聚合与分组

对于”group by”操作,我们通常是指以下一个或多个操作步骤:

(Splitting)按照一些规则将数据分为不同的组;

(Applying)对于每组数据分别执行一个函数;

(Combining)将结果组合到一个数据结构中;

数据聚合与分组

分组并对每个分组执行sum函数:

通过多个列进行分组形成一个层次索引,然后执行函数:

实例——逻辑回归Kaggle泰坦尼克之灾

泰坦尼克号问题之背景:

就是大家都熟悉的『Jack and Rose』的故事,豪华游艇快沉了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都上,副船长发话了『lady and kid first!』,所以是否获救其实并非随机,而是基于一些背景有rank先后的。

训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况。

这是一个二分类问题,是logistic regression所能处理的范畴。

机器学习——算法概览

从机器学习问题角度

监督学习

无监督学习

半监督学习

机器学习——算法概览

从算法的功能角度

回归算法(Regression Algorithms)

基于实例的算法(Instance-based Algorithms)

决策树类算法(Decision Tree Algorithms)

贝叶斯类算法(Bayesian Algorithms)

聚类算法(Clustering Algorithms)

人工神经网络类算法(Artificial Neural Network Algorithms)

深度学习(Deep Learning Algorithms)

降维算法(Dimensionality Reduction Algorithms)

模型融合算法(Ensemble Algorithms)

机器学习——算法概览

机器学习——分类与回归

预测结果如果是离散值(比如邮件分类问题中的垃圾邮件/普通邮件,比如用户会/不会购买某商品),那么我们把它叫做分类问题(classification problem);

朴素贝叶斯、逻辑回归、支持向量机等

预测结果是连续值(比如房价,股票价格等等),那么我们把它叫做回归问题(regression problem)。

线性回归等

机器学习——逻辑回归

逻辑回归  监督学习  分类问题

逻辑回归的成功之处在于,将原本输出结果通过sigmoid函数映射到(0,1),从而完成概率的估测。

逻辑回归能够较好地把两类样本点分隔开,解决分类问题。

实例——逻辑回归Kaggle泰坦尼克之灾

泰坦尼克号问题之背景:

就是大家都熟悉的『Jack and Rose』的故事,豪华游艇快沉了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都上,副船长发话了『lady and kid first!』,所以是否获救其实并非随机,而是基于一些背景有rank先后的。

训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况。

这是一个二分类问题,是logistic regression所能处理的范畴。

https://www.kaggle.com/

实例——逻辑回归Kaggle泰坦尼克之灾

import pandas as pd #数据分析

import numpy as np #科学计算

from pandas import Series,DataFrame

data_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泰坦尼克之灾

大体数据的情况看了一遍,对感兴趣的属性也有个大概的了解了。

下一步干啥?

处理处理这些数据(feature engineering过程),为机器学习建模做点准备吧

实例——逻辑回归Kaggle泰坦尼克之灾

Cabin:按Cabin有无数据,将这个属性处理成Yes和No两种类型吧。

Age:通常遇到缺值的情况,我们会有几种常见的处理方式。

实例——逻辑回归Kaggle泰坦尼克之灾

缺失数据常用处理方式:

1、如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了。

2、如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中。

3、如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。

4、有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。

实例——逻辑回归Kaggle泰坦尼克之灾

用scikit-learn中的RandomForest来拟合缺失的年龄数据:

实例——逻辑回归Kaggle泰坦尼克之灾

实例——逻辑回归Kaggle泰坦尼克之灾

因为逻辑回归建模时,需要输入的特征都是数值型特征,我们通常会先对类目型的特征因子化。

什么叫做因子化呢?举个例子:

以Cabin为例,原本一个属性维度,因为其取值可以是[‘yes’,’no’],而将其平展开为’Cabin_yes’,’Cabin_no’两个属性。

原本Cabin取值为yes的,在此处的”Cabin_yes”下取值为1,在”Cabin_no”下取值为0

原本Cabin取值为no的,在此处的”Cabin_yes”下取值为0,在”Cabin_no”下取值为1

实例——逻辑回归Kaggle泰坦尼克之灾

使用pandas的”get_dummies”来完成特征因子化,并拼接在原来的”data_train”之上:

实例——逻辑回归Kaggle泰坦尼克之灾

各属性值之间scale差距太大,将对收敛速度造成几万点伤害值!甚至不收敛!

先用scikit-learn里面的preprocessing模块做一个scaling,所谓scaling,其实就是将一些变化幅度较大的特征化到[-1,1]之内。

实例——逻辑回归Kaggle泰坦尼克之灾

把需要的feature字段取出来,转成numpy格式,使用scikit-learn中的LogisticRegression建模:

实例——逻辑回归Kaggle泰坦尼克之灾

”test_data”也要做和”train_data”一样的预处理!!!

实例——逻辑回归Kaggle泰坦尼克之灾

实例——逻辑回归Kaggle泰坦尼克之灾

预测取结果喽!

相关PPT

科多大数据——数据分析python简介ppt:这是科多大数据——数据分析python简介ppt,包括了Python 简介,环境安装,代码规范,编码格式等内容,欢迎点击下载。

Python培训ppt课件:这是Python培训ppt课件下载,主要介绍了快速开始简单语句;Python的数据类型;Python函数;内置特殊函数;Python脚本与模块;简单的网络通信及即时聊天;总结,欢迎点击下载。

pythonchapter2 ppt:这是pythonchapter2 ppt,包括了程序设计需要系统化的方法,软件开发过程,需求分析,制定程序规格,设计,实现,测试与排错,维护等内容,欢迎点击下载。

《python-pandas-数据分析技术与编程方法讲座ppt》是由用户巴扎嘿于2018-05-15上传,属于培训教程PPT。

你可能感兴趣的:(python,pandas,讲解ppt)