无论如何,坚持啊!
pandas的数据结构
Series
obj = Series([]) #产生一个Series
obj = Series({})#可以通过引入一个dict来创建一个Series
包括values和index两个属性,而values和index都有一个name属性
用NA表示缺失的数据,isnull,notnull用于判断
Dataframe
data = Dataframe(np.arange(16).reshape(4,4)) #或者传入一个由等长列表或Numpy数组组成的dict
frame2 = Dataframe(data,columns=[],index=[])
frame2[]或者frame2.#通过字典标记或者属性的方式,获取Dataframe的列
frame.ix[]索引字段
为不存在的列赋值会创建出新列,
del frame2[] #del用以删除列
以上索引返回的只是视图而非副本,若要创建副本,用.copy
索引对象
index,不可修改
- Index
- int64Index
- MultiIndex
- DatetimeIndex
- PeriodIndex
每个索引都有一些方法和属性,不在赘述
Series,Dataframe的基本功能
重新索引
reindex创建一个重新索引的新对象
若某个索引值当前不存在,就引入缺失值
可以通过method:ffill或bfill插值,fill_vale= 0等指定插入值
frame.reindex(index=[],method='ffill',columns=[])#索引可以同时按行和列改变,插值只能按行应用
reindex的函数
- method
- fill_value
- limit #限定最大填充量
- level 在MultiIndex的指定级别上匹配简单索引,否则取其子集
- copy
丢弃指定轴上的项
data.drop([],axis=1) #axis=1表示删除列,否则默认为axis=0删除行,[]为index或column中元素
索引,选取和过滤
- Series上索引,obj[…]
- DataFrame上索引,data.ix[]
- data.icol选取单列 data.irow选取单行
- get_value,set_value 根据行列标签选取单个值
利用标签的切片运算包括右边界
算术运算和数据对齐
- add
- sub
- div
- mul
运算时遵循取索引并集的原则,在不重叠的索引处引入NA,可以通过fill_value指定填充值
DataFrame和Series的运算为广播,默认将Series的索引匹配到DataFrame的列,沿行广播,如果不完全对应,将形成并集
使用0值表示沿着每一列或行标签\索引值向下执行方法,使用1值表示沿着每一行或者列标签模向执行对应的方法
函数应用和映射
Numpy中的ufunc可以用于pandas对象
np.abs(frame)
另一种操作
frame.apply(f,axis=1)
排序和排名
#对行或列索引进行命名,采用sort_index方法
frame.sort_index(axis=o/1,ascending=False#默认为升序)
frame.sort_index(by ['b','c'])
按值对Series排序,用order
排名rank()方法会增设一个排名值,为各组分配一个平均排名
- average#为各个值平均分配排名
- min #使用整个分组的最小排名
- max
- first 按在原始数据中出现的顺序分配排名
带有重复值的轴索引
某个索引对应多个值,则返回一个Series,对应单个值则返回一个标量值
汇总和计算描述统计
相关系数和协方差
corr计算两个Series中重叠的,非NA的,按索引对齐的值的相关系数,cov用于计算协方差
唯一值,值计数以及成员资格
uniques = obj.unique()#返回一个唯一值数组
obj.value_counts() #计算各个值出现的频率
obj.isin[]
处理缺失数据
python内置的none也被作为NA处理
- dropna
- fillna
- isnull
- notnull
滤除缺失数据
对于Series,dropna返回一个仅含非空数据的Series,对于DataFrame,丢弃任何含有缺失值的行,传入how=‘all’将只丢弃全为NA的行
data.dropna(how='all')
df.dropna(thresh=3)#一行中至少有三个NAN时保留
填充缺失数据
df.fillna(0)
df.fillna({1:0.5,3:-1})
df.fillna(method=)
fillna返回新对象,inplace=true时对现有对象进行就地修改
层次化索引
重排分级顺序
df.swaplevel(,)
df.sortlevel(1)#按1排序
根据级别汇总统计
frame.sum(level='key2')
frame.sum(level='color')
使用Dataframe的列
df.set_index([],drop=)#默认这些列会被移除
df.reset_index()#层次化索引被转移到列里面