数据分析总结-pandas

[TOC]

pandas官网arrow-up-right

一、Series

  • Series是一个一维的数据结构

赋值

  • pandas会默认用0到n来作为Series的index,但是我们也可以自己指定index

s = pd.Series([7, 'Beijing', 2.17, -1232, 'Happy birthday!'])
  • 还可以用dictionary来构造一个Series,因为Series本来就是key value pairs。

cities = {'Beijing': 55000, 'Shanghai': 60000, 'Shenzhen': 50000, 'Hangzhou':20000, 
'Guangzhou': 25000, 'Suzhou': None}
apts = pd.Series(cities)

前面定义的index就是用来选择数据的

apts[apts <= 50000] = 40000

取值

boolean indexing也可以用到pandas中来取值

apts[apts < 50000]

数学运算

  • apts / 2

  • apts * 2

  • np.square(apts)

    • square也可以写成 :apts 2

数据缺失

  • apts.notnull()

  • apts.isnull():

    • apts[apts.isnull()] 获取值为空的key,value

    • apts[apts.isnull() == False] 获取值不为空的key,value

二、DataFrame

dataframe详细解析arrow-up-right

一个Dataframe就是一张表格,Series表示的是一维数组,Dataframe则是一个二维数组,可以类比成一张excel的spreadsheet。也可以把Dataframe当做一组Series的集合。

创建一个DataFrame

dataframe可以由一个dictionary构造得到。

columns的名字和顺序可以指定

从DataFrame里选择数据

  • frame2['city'] = frame2.city

  • frame2.ix['three']: 这种是选取行index

  • frame2.ix[2] :这种方法默认用来选列而不是选行

  • 还可以用Series来指定需要修改的index以及相对应的value,没有指定的默认用NaN.

  • 指定index的顺序,以及使用切片初始化数据

  • 我们还可以指定index的名字和列的名字

DataFrame元素赋值

其他运算

  • 一个DataFrame就和一个numpy 2d array一样,可以被转置: frame2.T

三、Index, reindex and hierarchical indexing

index objects

  • index的值是不能被更改的

  • 针对index进行索引和切片

    obj = pd.Series(np.arange(4), index=['a','b','c','d'])

    默认的数字index依旧可以使用

  • 如何对Series进行切片

  • 对DataFrame进行Indexing与Series基本相同

  • reindexsarrow-up-right

    把一个Series或者DataFrame按照新的index顺序进行重排

  • 在reindex的同时,我们还可以重新指定columns

  • 可以用drop来删除Series和DataFrame中的index

    obj3.drop(2)

    obj3.drop([2, 4])

  • unstack和stack可以帮助我们在hierarchical indexing和DataFrame之间进行切换。

    data.unstack()

四、Merge, Join, Concatenate, Groupby and Aggregate

Merge(join)

pd.merge(df1, df4, on='cities')

  • join on index

    df1.join(df4)

    df1.join(df4, how='outer')

    也可以用merge来写:pd.merge(df1, df4, left_index=True, right_index=True, how='outer')

concatenate

在concatenate的时候可以指定keys,这样可以给每一个部分加上一个Key。

以下的例子就构造了一个hierarchical index。相当于再加一级index

  • 用inner可以去掉NaN

  • 用append来做concatenation

    df1.append(df4)

    可以通过append添加一个row

  • Series和DataFrame还可以被一起concatenate,这时候Series会先被转成DataFrame然后做Join,因为Series本来就是一个只有一维的DataFrame对吧。

Group By

groupby经常和aggregate一起使用

describe

describe这个function可以为我们展示各种有用的统计信息

bikes.dropna() 删除空值

dropna会删除所有带NA的行

五、Read from csv

读取csv文件arrow-up-right

六、随堂案例:bikes routes counts

Last updated

Was this helpful?