2015-03-04-pandas(1)

来源:互联网 发布:ftp需要开放的端口 编辑:程序博客网 时间:2024/06/05 01:59
--------------------------------------------------------------------------------
--Series
from pandas import Series,DataFrame
import pandas as pd
import numpy as np


obj=pd.Series([4,7,-5,3])
obj
obj.values
obj.index


obj2=Series([4,7,-5,3],index=['d','b','a','c'])
obj2['a']
obj2['d']=6
obj2[['c','a','d']]


通过字典来创建Series:
sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
obj3=Series(sdata)
states=['California','Ohio','Oregon','Texas']
obj4=Series(sdata,index=states)
pd.isnull(obj4)
pd.notnull(obj4)
obj4.isnull()


obj3
obj4
obj3+obj4
--name属性
obj4.name='polulation'
obj4.index.name='state'
--Series的索引可以通过赋值的方式就地修改
obj.index=['Bob','Steve','Jeff','Ryan']
--------------------------------------------------------------------------------
--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)
--列按照指定的顺序排列
DataFrame(data,columns=['year','state','pop'])
--如果传入的列在数据中找不到,就会产生NA值
frame2=DataFrame(data,columns=['year','state','pop','dept'],index=['one','two','three','four','five'])
frame2.columns
frame2['state']
frame2.year


获取行
frame2.ix['three']
对列进行赋值
frame2['debt']=16.5
frame2['debt']=np.arange(5)
frame2['debt']=Series([-1.2,-1.5,-1.7],index=['two','four','five'])


关键字del用于删除列
frame2['eastern']=frame2.state=='Ohio'


由嵌套字典创建:外层字典的键作为列,内层键则作为行索引
pop={'Nevada':{2001:2.4,2002:2.9},
'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
frame3=DataFrame(pop)
转置:frame3.T
显示指定索引
DataFrame(pop,index=[2001,2002,2003])


表5.1可以输入给DataFrame构造函数所能接受的各种数据
--------------------------------------------------------------------------------
索引对象
--------------------------------------------------------------------------------
基本功能
1.重新索引
obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])
obj2=obj.reindex(['a','b','c','d','e'])
obj.reindex(['a','b','c','d','e'],fill_value=0)
使用ffill可以实现前向值填充
obj3=Series(['blue','purple','yellow'],index=[0,2,4])
obj3.reindex(range(6),method='ffill')
ffill或pad 前向填充(或搬运)值
bfill或backfill 后向填充(或搬运)值


frame=DataFrame(np.arange(9).reshape((3,3)),index=['a','c','d'],columns=['Ohio','Texas','California'])
frame2=frame.reindex(['a','b','c','d'])
使用columns关键字即可重新索引列
states=['Texas','Utah','California']
frame.reindex(columns=states)
frame.reindex(index=['a','b','c','d'],method='ffill',columns=states)
利用ix的标签索引功能,重新索引任务可以变得更简洁
frame.ix[['a','b','c','d'],states]
2.丢弃指定轴上的项
obj=Series(np.arange(5.),index=['a','b','c','d','e'])
new_obj=obj.drop('c')
new_obj=obj.drop(['d','c'])
对于DataFrame,可以删除任意轴上的索引值
data=DataFrame(np.arange(16).reshape((4,4)),
index=['Ohio','Colorado','Utah','New York'],
columns=['one','two','three','four'])
data.drop(['Colorado','Ohio'])
data.drop('two',axis=1)
data.drop(['two','four'],axis=1)
3.索引、选取和过滤
--------------------------------------------------------------------------------



0 0