Python For Data Analysis -- Pandas

首先pandas的作者就是这本书的作者 
对于Numpy,我们处理的对象是矩阵 
pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like),和矩阵的区别就是,二维表是有元数据的 
用这些元数据作为index更方便,而Numpy只有整形的index,但本质是一样的,所以大部分操作是共通的

大家碰到最多的二维表应用,关系型数据库中的表,有列名和行号,这些就是元数据 
当然你可以用抽象的矩阵来对这些二维表做统计,但使用pandas会更方便

 

Introduction to pandas Data Structures

Series

A Series is a one-dimensional array-like object containing an array of data (of any NumPy data type) and an associated array of data labels, called its index. 
简单的理解,就是字典,或一维表;不显式指定index时,会自动添加 0 through N - 1的整数作为index

这里可以简单的替换index,生成新的series,

大家想想,对于Numpy而言,没有显式的指定index,但也是可以通过整形的index取到数据的,这里的index其实本质上和numpy的整形index是一样的 
所以对于Numpy的操作,也同样适用于pandas

同时,上面说了series其实就是字典,所以也可以用python字典来初始化

 

DataFrame

A DataFrame represents a tabular, spreadsheet-like data structure containing an ordered collection of columns, each of which can be a different value type (numeric, string, boolean, etc.).

如果接触过R,应该对DataFrame很熟悉,其实pandas就从某种程度上模拟出R的一些功能 
所以如果用python也可以像R一样方便的做统计,那何必要再去用R

上面Series是字典或一维表, 
DataFrame是二维表,也可以看作是series的字典

指定了列名,行名是自动生成的

同时也可以指定行名,这里增加了debt列,但是没有数据,所以是NaN

可以为debt,赋值

取行,用ix

也可以用嵌套字典来创建Dataframe,其实是series的字典,series本身就是字典,所以就是嵌套的字典

可以像numpy矩阵一样,转置

 

Essential Functionality

下面看看到底pandas在这些数据结构上提供了哪些方便的functions

Reindexing

A critical method on pandas objects is reindex, which means to create a new object with the data conformed to a new index.

其实就是更改indexing

增加e,并默认填上0

还可以通过method参数,来指定填充方式

可以选择向前或向后填充

对于二维表,可以在index和columns上同时进行reindex

reindex的参数,

 

Dropping entries from an axis

用axis指定维度,对于二维表,行是0,列是1

 

Indexing, selection, and filtering

基本和Numpy差不多

 

Arithmetic and data alignment

数据对齐和自动填充是pandas比较方便的一点

In [136]: df1 = DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd')) 
In [137]: df2 = DataFrame(np.arange(20.).reshape((4, 5)), columns=list('abcde'))

可以看到默认情况下,只有两个df都有的情况下,才会相加,否则为NaN 
我觉得大部分情况,应该是希望有一个就加一个,即把没有的初始化为0

除了add,还支持

 

Function application and mapping

1. Element-wise:NumPy ufuncs (element-wise array methods) work fine with pandas objects:

另一种element-wise,使用applymap

 

2. 可以将func apply到每一行或每一列

比较复杂的case

 

3.对于某个行或列,即series进行map

 

Summarizing and Computing Descriptive Statistics

提供很多类似R的统计函数,

提供类似R中的descirbe,很方便

对非数值型,执行describe

汇总表,

 

Correlation and Covariance,相关系数和协方差

对MSFT和IBM之间求相关系数和协方差

也可以求出相关系数矩阵和协方差矩阵

 

Unique Values, Value Counts, and Membership

In [217]: obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])

In [218]: uniques = obj.unique() 
In [219]: uniques 
Out[219]: array([c, a, d, b], dtype=object)

In [220]: obj.value_counts() 
Out[220]: 
c 3 
a 3 
b 2 
d 1

 

Handling Missing Data

提供一些用于处理missing data的工具函数

其中fillna复杂些,

 

Hierarchical Indexing

Hierarchical indexing is an important feature of pandas enabling you to have multiple (two or more) index levels on an axis. Somewhat abstractly, it provides a way for you to work with higher dimensional data in a lower dimensional form.

可以使用多层分级的index,其实本质等同于增加一维,所以相当于用低维来模拟高维数据

并且是支持,通过unstack和stack来还原多维数据的

 

Pandas还提供其他功能,尤其是ETL功能,方便数据处理

比如和各种文件读入和写出的功能

cleaning, transform(基于map), merge(join)……

本文章摘自博客园,原文发布日期:2014-08-12

时间: 2024-10-07 18:29:59

Python For Data Analysis -- Pandas的相关文章

Python For Data Analysis -- NumPy

NumPy作为python科学计算的基础,为何python适合进行数学计算,除了简单易懂,容易学习 Python可以简单的调用大量的用c和fortran编写的legacy的库 Python科学计算的这几个库,单独安装还是蛮麻烦的,所以推荐这个包 http://www.continuum.io/downloads#all conda list #查看所有的可安装包    conda install wxpython #安装    conda install pyqt #安装    conda up

Python For Data Analysis -- IPython

IPython Basics 首先比一般的python shell更方便一些  比如某些数据结构的pretty-printed,比如字典  更方便的,整段代码的copy,执行 并且可以兼容部分system shell , 比如目录浏览,文件操作等   Tab Completion 这个比较方便,可以在下面的case下,提示和补全未输入部分 a. 当前命名空间中的名字 b.对象或模块的属性和函数 c. 文件路径   Introspection, 内省 ?,在标识符前或后加上,显示出对象状况和doc

天龙八步 第二弹:8步从Python白丁到专家,从基础到深度学习

如果你想做一个数据科学家,或者作为一个数据科学家你想扩展自己的工具和知识库,那么,你来对地方了. 这篇文章的目的,是给刚开始使用Python进行数据分析的人,指明一条全面的Python学习路径.这条路径提供了用Python进行数据分析的必要步骤的一个全面概述.如果你已经有了一些基础,或者不需要所有的内容,可以随意调整学习路径以适合自己,并让我们知道你是怎么改动的. 0热身运动在开始学习之前,第一个需要回答的问题是 推荐这个30分钟的录像,它是DataRobot创始人Jeremy在2014年Pyt

python数据分析时出现RunTimeError

问题描述 python数据分析时出现RunTimeError 我在做<Python fo Data Analysis>第8章地震危机数据处理的时候出现了以下错误信息,希望有大神帮忙分析一下. RuntimeError Traceback (most recent call last) <ipython-input-15-b85854eb74f4> in <module>() 80 cat_data = data[data['category_%s' % code] ==

《Python金融大数据分析》一2.3 延伸阅读

2.3 延伸阅读 下面的网络资源有助于本章介绍的主题. Anaconda文档--http://docs.continuum.io/anaconda/ conda文档--http://conda.pydata.org/docs/ IPython文档--http://ipython.org/ipython-doc/stable/ IPython Notebook使用的Markdown语言--http://daringfireball.net/projects/markdown/有关Spyder的信息

《Python Cookbook(第3版)中文版》——6.3 解析简单的XML文档

6.3 解析简单的XML文档 6.3.1 问题 我们想从一个简单的XML文档中提取出数据. 6.3.2 解决方案 xml.etree.ElementTree模块可用来从简单的XML文档中提取出数据.为了说明,假设想对Planet Python(http://planet.python.org )上的RSS订阅做解析并生成一个总结报告.下面的脚本可以完成这个任务: from urllib.request import urlopen from xml.etree.ElementTree impor

机器学习:入门方法与学习路径 (附资料)

◆ ◆ ◆ 1. 引言 也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸:也自然而然点开今日头条推给你的新闻:也习惯逛淘宝点了找相似之后货比三家:亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈.恩,这些功能的核心算法就是机器学习领域的内容. 套用一下大神们对机器学习的定义,机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身.简单一点说,就是计算机从数据中学习出规律和模式,以应用在新数据

机器学习路线图

                                                    机器学习路线图 1. 引言 最近google的阿尔法狗大战李世石刷屏了,闲下来时也了解点机器学习or深度学习的理论 2. 机器学习关注问题 并非所有的问题都适合用机器学习解决(很多逻辑清晰的问题用规则能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题.咱们先来了解了解,机器学习,到底关心和解决什么样的问题. 从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题: 1.分

如何进阶为数据科学家

数据科学并没有一个独立的学科体系,统计学,机器学习,数据挖掘,数据库,分布式计算,云计算,信息可视化等技术或方法来对付数据. 但从狭义上来看,我认为数据科学就是解决三个问题: 1. data pre-processing;(数据预处理) 2. data interpretation:(数据解读) 3.data modeling and analysis.(数据建模与分析) 这也就是我们做数据工作的三个大步骤: 1.原始数据要经过一连串收集.提取.清洗.整理等等的预处理过程,才能形成高质量的数据: