pandas主要有两个数据结构:Series和DataFrame
Series
- Series是一种类似于一维数组的对象,它有一组数据以及一组与之相关的数据标签组成obj=Series([4,7,-2,1]) //没有指定索引
- 索引在左,值在右
- obj=Series([4,7,-2,1],index=[‘a’,’b’,’d’,’c’])
- frame=DataFrame(np.arange(9).reshape((3,3)))
- 选取值:obj[‘c’] obj[‘a’,’d’]
- obj[obj>0] : 选取值>0的数组
- 使用字典也可创建:
stada={'ab':12,'cd':09} obj=Series(stada)
- 也可obj=Series(stada,index=states) 如果
- 不同的Series相加,会根据索引的值相加,若有一个元素在一个字典有,另一个没有,则值为NaN
- Series和索引都有name属性
- Series的索引可以就地修改
DataFrame
- DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值的类型(数值、字符串、布尔)。既有行索引,也有列索引,它可以被看作有Series组成的字典(共用一个索引)
data={'state':['aa','bb','cc','dd'],'year':[2000,2001,2002,2000,2001]} frame=DataFrame(data) //会自动加上索引,从0开始
- data是数据,columns指明data列的顺序(如果data没有指明的列,则整个列的值都为Nan),index是行名:frame=DataFrame(data,columns=[‘year’,’debt’,’state’],index=[1,2,3,4,5])
- DataFrame->Series : frame[‘state’]或者是frame.year //拥有与DataFrame相同的索引
- frame[‘state’]=‘CHINA’ //所有的state值都为CHINA
- frame[‘debt’]=np.arange(5)
- 令debt部分值改变:
令debt部分值改变: //将索引为2,4,5且列为debt的值分别改为2,5,8 val=Series([2,8,5],index=[2,4,5]) frame['debt']=val
- 删除列:del frame[‘debt2’]
- 增加列 frame[debt3]=frame.state==’Ohio’ //debt3的值类型为布尔
- 假如数据类型是嵌套字典,如:
pop={"Nevade":{2001:2.4,2002:2.9},'Ohio':{2000:9.9,2001:2.2}} frame4=DataFrame(pop) //2000-2002为该DataFrame的索引,Nevade、Ohio为该DataFrame的columns
- 转置:frame3.T
- index和columns都有name属性,可改变
- DataFrame有value属性
- 索引对象index不可修改
重新索引
- obj2=obj.reindex([‘a’,’b’,’v’],fill_value=0)
- 上面fill_value=0或者method=”ffill”或“bfill” //向前向后填充
丢弃指定轴上的项
- 去掉某行:obj.drop(‘c’)
- 去掉多行:obj.drop([‘c’,’d’])
- 去掉某列:obj.drop(‘first’,axis=1)
- 去掉多列:obj.drop([‘2nd’,’3rd’],axis=1)