利用Python进行数据分析——pandas入门

Pandas的两种主要数据结构:Series和DataFrame

obj=Series()参数是列表,元素,字典,数组等。

Series在算术运算中会有自动对齐不同的索引的功能,索引可以通过赋值的方式修改obj.index=['Bob','Steve']

Series可以看成是一个字典,因为他是索引值到数据值得隐射


DataFrame表格型数据结构,含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。

构建DataFrame的方法

第一、等长列表或者数组组成的字典

data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],

'year':[2000,2001,2002,2001,2002],

'pop':[1.5,1.7,3.6,2.4,2.9]}

frame=DataFrame(data)


获取某列的方法frame['state']或者frame.year

也可以通过位置和名称的方式进行获取ix['three']

为不存在的列赋值会创建一个新列,关键字del用于删除列


第二、常见的数据形式是嵌套字典(也就是字典的字典)外层字典的键作为列,内层的键则作为行索引

可以输入给DataFrame的构造器的数据

二维ndarray

由数组、列表或元组组成的字典:每个序列会变成DataFrame的一列

Numpy的结构化数组/记录数组:类似于“由数组组成的字典”

由Series组成的字典:每个Series会成为一列,没有显示指定索引,则各个Series的索引会被合并成结果的行索引

字典或Series的列表:字典键或Series索引成为列标

由列表或元组组成的列表:类似于二维数组

另一个DataFrame


索引对象

构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转成一个Index

每个索引都有一些方法和属性

append;diff(),intersection(),union(),isin(),delete(),drop(),insert(),unique(),is_unique(),is_monotonic


一、基本功能

1、重新索引

重要方法是reindex

obj=Series([4.5,7.2,-5.3,3.6]);obj2=reindex(['a','b','c','d','e'])

obj3.reindex(range(6),method='ffill')

reindex的method选项

ffill或pad:前向填充(搬运)值

bfill或backfill:后向填充(搬运)值

对数据框,reindex也可以修改(行)索引,列或两个都修改

仅传入一个序列,只修改索引行,使用columns关键字可重新索引列

同时对列和行进行重新索引,而插值只能按行应用

reindex函数的参数:

index,method,fill_value缺失值的替代值,limit前向或后向填充时的最大填充量

level层次化索引指定级别

2、丢弃轴上的项

drop方法obj.drop('c')

data.drop(['Colorado','Ohio'])

data.drop('two',axis=1)

3、索引,选取和过滤

切片运算时包含末端的obj['b':'c']

obj['b'], obj[['b','c','a']],obj[1],obj[2:4],obj[[1,3]],obj[obj<2]

data.ix['Colorado',['two','three']]

data.ix[2]

obj[val]:选取DataFrame的单个列或一组列

obj.ix[val]:选取DataFrame的单个行或一组行

obj.ix[:,val]:选取单个列或一组列

obj.ix[val1,val2]同时选取行和列

reindex将一个轴或多个轴匹配到新索引

xs:根据标签选取单行或单列,并返回一个Series

icol、irow根据位置整数选取单列或单行,并返回一个Series

get_value、set_value根据行标签和列标签选取单个值

3、算术运算和自动对齐

对象相加时,会根据索引匹配相加,对于不存在的索引则会引入NA值

df1.add(df2,fill_value=0)

DataFrame与Series之间的运算会将索引匹配到DataFrame的列,然后沿着行一直向下广播


二、函数应用和映射

Numpy的元素级数组方法也可以用于操作pandas

frame.apply(); applymap()

2、排序和排名

obj.sort_index()按索引排序

按值排序可以用obj.order()

排名

obj.rank(method='average','min','max','first')


三、汇总和计算描述统计

df.sum();axis约简的轴,skipna排除缺失值,level层次化索引

coun:非NA值得数量

describe:针对Series或各DataFrame列计算汇总统计

min、max计算最小值和最大值

argimn、argmax计算能够获取到最小值和最大值的索引位置(整数)

idxmin、idxmax计算能够及时获取到最小值和最大值的索引值

quantile计算样本的分位数

sum值得总和

mean值得平均数

median值得算术中位数

mad根据平均值计算平均绝对离差

var样本值的方差

std样本值的标准差

skew样本值的偏度

Kurt样本值的峰度

cummin、cummax样本值得累积最大值和最小值

cumprod样本值累计积

corr相关系数,cov协方差

3、唯一值、值计数以及成员资格

isin返回布尔型数组

unique唯一值数组

value_counts索引为唯一值,其值为频率

四、处理缺失值

1、NA处理方法

dropna根据各标签的值中是否存在缺失数据对轴标签进行过滤

fillna用指定值填充缺失数据

isnull表示哪些是缺失值

notnull

fillna函数的参数

value:用于填充缺失值得标量值或字典对象

method:插值方式,前向还是后向,默认ffill

axis:待填充的轴,默认axis=0

limit可以连续填充的最大数量

2、层次化索引

选取子集的方法

data['b'], data['b':'c'], data.ix[['b','c']]

unstack方法转化为DataFrame

stack方法把DataFrame转换为stack

3、重排分级顺序

data.swaplevel('key1','key2')

data.sortlevel(1)

data.sum(level='key2')

4、DataFrame转化为层次索引

frame.set_index(['c','d'])

frame.set_index(['c','d'],drop=False)

5、面板数据

转换为DataFrame

pdata.ix[].to_frme()

数据框转化为面板数据

frame.to_panel()

你可能感兴趣的:(读书笔记,python,数据分析)