您的位置:首页 > 编程语言 > Python开发

Pandas学习笔记二(Pandas对象的基本方法)

2017-07-17 15:06 239 查看

1.根据索引重排数据reindex

reindex是pandas对象的一个重要方法,该方法将返回当前对象经过新索引(序列型数据,如列表、元组、数组等)重排之后的一个副本。

对Series对象使用reindex,若某个索引在当前对象中不存在,则引入缺失值NAN,或可使用fill_value设置缺失值的填充值,或可指定缺失值的填充方法method(向前填充ffill/pad,向后填充bfill/backfill)。

from pandas import Series, DataFrame
import pandas as pd

ob = Series(['a','b','c'])  #默认索引0-2
ob1=ob.reindex(range(4), fill_value= 'd')  #缺失值设置为'd'
ob2=ob.reindex([2,3,0,1], method ='ffill')  #前向填充 ob2[3]=ob2[2]
0b3=ob.reindex([2,3,0,1], method ='bfill')  #后向填充 ob3[3]=ob3[4]=NAN


对DataFrame,reindex既可修改行索引,也可以修改列索引。

i. 若只传入一个序列,默认修改行索引

ii. 也可指定关键字columns对列索引进行重排

iii. 也可以同时对行索引和列索引进行重排,但填充方法method只能按行应用。

另外,利用DataFrame.ix标签索引功能也可以进行重排。

import numpy as np

frame = DataFrame(np.arange(9).reshape((3,3)),index = ['a','c','d'], columns = ['A','B','C'])
#使用数组生成DataFrame对象,指定行和列名
frame1 = frame.reindex(['a','b','c','d'], fill_value =0)  #默认修改行索引,缺失值以0代替

frame2 = frame.reindex(columns=['A','C','D'])  #指定修改列索引

frame3 = frame.reindex(index = ['a','b','c','d'], method = 'ffill', columns=['A','C','D'])
#同时修改行索引和列索引

frame4 = frame.ix[['d','c','a'],['C','B','A']]  #利用ix标签索引重排


2.丢弃指定行或列drop

使用drop方法传入一个索引数组或列表即可。

方法原型:drop(self, labels, axis=0, level=None, inplace=False, errors=’raise’)

参数说明:

axis:默认值为0,对DataFrame即是默认删除指定行,指定axis=1则是删除指定列

inplace:表示是否直接在原数据中删除,值为False时,表示对原数据不做修改,但返回一个副本;值为True表示直接在原数据中修改,无返回值。

##对Series
obj = Series(np.arange(4.), index = ['a','b','c','d'])
new_obj = obj.drop('b')  #删除索引为'b'的项
new_job1 = obj.drop(['c','b'])  #删除多个项
obj.drop('b', inplace = 1)  #原数据删除索引为'b'的项
##只能删除存在的项,否则出错

##对DateFrame,可删除任意轴(行或列)上的指定项
df = DataFrame(np.arange(16).reshape((4,4)),index =['A','B','C','D'], columns=['one','two','three','four'])
df1 = data.drop(['A','C']) #删除指定的多个行
df2 = data.drop(['three','two'], axis =1)  #删除指定的多个列
data_copy = df.copy()  #复制,深复制
data_copy.drop('two',axis =1, inplace = True) #直接在data_copy上操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pandas python
相关文章推荐