近几日对金融数据进行预处理分析等等,pandas用的比较多,而且发现pandas的创始人就是为了处理金融数据的时候开发的pandas,在pandas功能不断扩展的时候才应用到了其他更多的领域,下面,我就对我这些天来对pandas的学习做一个简单的整理,沉淀一下。
from pandas import Series, DataFrame
import pandas as pd
- Series类似于一维数组的对象,索引在左边,值在右边,可以通过Series的values和index属性获取其数组表示形式和索引对象
- 如果数据被存储在一个Python字典中,则可以通过这个字典来创建Series
- 使用缺失missing或者NA来表示缺失数据,可以使用isnull和notnull来检测缺失数据
- Series一个重要功能就是它可以自动对齐不同索引的数据
- DataFrame既有行索引也有列索引,它可以被看作由Series组成的字典(共同用一个索引)。DataFrame中面向行和面向列的操作基本上是平衡的
- 构造DataFrame的方法可以是传入一个由等长列表或者NumPy数组组成的字典
- 返回所有列的索引:
df.columns
返回所有列的索引:df.index
- 通过类似字典标记或者属性的方式获取列:
df['col1']
通过位置或名称的方式进行获取,使用ix字符:df.ix['row1']
- 列可以通过赋值的方式进行修改,但是行不可以,比如
df['col1'] = 0
- df.values属性会将DataFrame以二维ndarray的形式返回
- pandas对象的一个重要方法是重新索引,reindex。比如:
df.reindex(['a', 'b', 'c', 'd', 'e'], fill_value = 0)
,参数涉及到前项填充和后项填充等 - 行为轴0,列为轴1
- reindex函数的参数既可以是Index实例,也可以是其他序列型的Python数据结构
- df.drop([‘row1’, ‘row2’])默认是删除行;加入参数axis=1则变成删除列
- 利用标签的切片运算与普通的Python切片不同,末端是包含的。比如df[‘b’:’c’]则包含’c’
在DataFrame的行上进行标签索引有以下几种方式:
1.df.ix['row', ['col1', 'col2']]
2.df.ix[['row1', 'row2'], [3, 0, 1]]
3.df.ix[2]
4.df.ix[:'row1', 'col1']
5.df.ix[df.col1>5, :3]
apply函数可以将函数应用到各列或行所形成的一维数组上
如果想对frame中的各个浮点值进行格式化,使用如下:
format = lambda x: '%.2f' % x
frame.applymap(format)
frame['row1'].map(format)
排序使用
sort_index
方法,ascending = False
时为降序,反之,默认为升序(从小到大)- rank函数可以给出Series的各个元素在其中的排名,一般添加
method = 'first'
,表示按值在原始数据中的出现顺序进行排名 idxmax()
和idxmin()
函数返回的是间接统计,表示的是一个DataFrame达到最大值或最小值的索引值(比如给出字符串型标签)argmin()
和argmax()
计算能够获取到最大值或最小值的索引位置(与给出标签不同,这个给出的是第几个位置,整数)value_counts()
用于计算一个Series中各值出现的频率how = 'all'
将会只丢弃全为NA的那些行- 可以通过一些技巧,在缺失值处填入平均值、中位数或者最大值等等,比如
Series.fillna(Series.mean())
set_index()
会将其一个或多个列转换为行索引,reset_index
会把层次化索引后的级别转移回去到列里面- 若不想考虑类型,基于位置,就可以使用Series的iget_value方法或者DataFrame的irow和icol方法
- rolling是其中的一个移动窗口函数,可以定义移动窗口。比如股市的MA曲线就可以很方便用这种方式求出,MA10、MA30等等,这方面的函数有
rolling_sum
、rolling_mena
等,其中可以加入参数window = 10
设置窗口的大小为10