pandas入门学习二

本文是学习《利用Python进行数据分析》的部分笔记,在这里感谢作者

DataFrame是一个表格型的数据结构,有列索引有行索引,每列的值可以不同。

一:dataFrame的创建:

1,最常用的是传入一个由等长列表或Numpy数组组成的字典:

 

>>> 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)
>>> frame
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

如果指定了列序列,则DataFrame的列就会按照指定顺序进行排序:

 

 

DataFrame(data,columns=['year','state','pop'])
   year   state  pop
0  2000    Ohio  1.5
1  2001    Ohio  1.7
2  2002    Ohio  3.6
3  2001  Nevada  2.4
4  2002  Nevada  2.9

跟Series一样,传入的列在数据中找不到,就会产生NA值

 

 

frame2=DataFrame(data,columns=['year','state','pop','debt'],
... index=['one','two','three','four','five'])
>>> frame2
       year   state  pop debt
one    2000    Ohio  1.5  NaN
two    2001    Ohio  1.7  NaN
three  2002    Ohio  3.6  NaN
four   2001  Nevada  2.4  NaN
five   2002  Nevada  2.9  NaN

通过类似字典标记的方式,或者属性的方式,可以将DataFrame的列获取为一个Series

 

frame2['state']
Out[8]: 
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object

frame2.year
Out[9]: 
one      2000
two      2001
three    2002
four     2001
five     2002
Name: year, dtype: int64

行也可以通过位置或名称的方式进行获取,比如用索引字段ix

frame2.ix['three']
Out[10]: 
year     2002
state    Ohio
pop       3.6
debt      NaN
Name: three, dtype: object

列可以通过赋值的方式进行修改,例如:我们可以给那个空的“debt”列赋上一个标量值或者一组值

 

 

frame2['debt']=16.5

frame2
Out[12]: 
       year   state  pop  debt
one    2000    Ohio  1.5  16.5
two    2001    Ohio  1.7  16.5
three  2002    Ohio  3.6  16.5
four   2001  Nevada  2.4  16.5
five   2002  Nevada  2.9  16.5
frame2['debt']=np.arange(5)

frame2
Out[16]: 
       year   state  pop  debt
one    2000    Ohio  1.5     0
two    2001    Ohio  1.7     1
three  2002    Ohio  3.6     2
four   2001  Nevada  2.4     3
five   2002  Nevada  2.9     4

将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配,如何赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位会被填上缺失值:

 

var=Series([-1.2,-1.5,-1.7],index=['two','four','five'])
frame2['debt']=var

frame2
Out[20]: 
       year   state  pop  debt
one    2000    Ohio  1.5   NaN
two    2001    Ohio  1.7  -1.2
three  2002    Ohio  3.6   NaN
four   2001  Nevada  2.4  -1.5
five   2002  Nevada  2.9  -1.7

为不存在的列赋值会创建一个新列,关键字del用于删除列

 

 

del frame2['eastern']

frame2.columns
Out[24]: Index(['year', 'state', 'pop', 'debt'], dtype='object')

另一种常见的数据形式是嵌套字典

 

 pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}

外层字典的键作为列,内层键作为行索引:

 

 

frame3=DataFrame(pop)

frame3
Out[6]: 
      Nevada  Ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

也可以对结果转置

 

 

frame3.T
Out[7]: 
        2000  2001  2002
Nevada   NaN   2.4   2.9
Ohio     1.5   1.7   3.6

跟Series一样,values属性也会以二维数组形式返回DataFrame中的数据

 

 

frame3.values
Out[11]: 
array([[ nan,  1.5],
       [ 2.4,  1.7],
       [ 2.9,  3.6]])

二:索引对象

 

构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会转化为一个index:

 obj=frame3.index

obj
Out[13]: Int64Index([2000, 2001, 2002], dtype='int64', name='year')

Index对象是不能修改的,用户不能对其修改。

 





 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值