首先pandas的作者就是这本书的作者
对于numpy,我们处理的对象是矩阵
pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like),和矩阵的区别就是,二维表是有元数据的
用这些元数据作为index更方便,而numpy只有整形的index,但本质是一样的,所以大部分操作是共通的
大家碰到最多的二维表应用,关系型数据库中的表,有列名和行号,这些就是元数据
当然你可以用抽象的矩阵来对这些二维表做统计,但使用pandas会更方便
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矩阵一样,转置
下面看看到底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
提供很多类似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
提供一些用于处理missing data的工具函数
其中fillna复杂些,
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