pandas入门学习二

来源:互联网 发布:淘宝图片空间协议手机 编辑:程序博客网 时间:2024/05/21 10:48

本文是学习《利用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  year0  1.5    Ohio  20001  1.7    Ohio  20012  3.6    Ohio  20023  2.4  Nevada  20014  2.9  Nevada  2002
如果指定了列序列,则DataFrame的列就会按照指定顺序进行排序:

DataFrame(data,columns=['year','state','pop'])   year   state  pop0  2000    Ohio  1.51  2001    Ohio  1.72  2002    Ohio  3.63  2001  Nevada  2.44  2002  Nevada  2.9
跟Series一样,传入的列在数据中找不到,就会产生NA值

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

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

frame2['state']Out[8]: one        Ohiotwo        Ohiothree      Ohiofour     Nevadafive     NevadaName: state, dtype: objectframe2.yearOut[9]: one      2000two      2001three    2002four     2001five     2002Name: year, dtype: int64
行也可以通过位置或名称的方式进行获取,比如用索引字段ix
frame2.ix['three']Out[10]: year     2002state    Ohiopop       3.6debt      NaNName: three, dtype: object
列可以通过赋值的方式进行修改,例如:我们可以给那个空的“debt”列赋上一个标量值或者一组值

frame2['debt']=16.5frame2Out[12]:        year   state  pop  debtone    2000    Ohio  1.5  16.5two    2001    Ohio  1.7  16.5three  2002    Ohio  3.6  16.5four   2001  Nevada  2.4  16.5five   2002  Nevada  2.9  16.5
frame2['debt']=np.arange(5)frame2Out[16]:        year   state  pop  debtone    2000    Ohio  1.5     0two    2001    Ohio  1.7     1three  2002    Ohio  3.6     2four   2001  Nevada  2.4     3five   2002  Nevada  2.9     4

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

var=Series([-1.2,-1.5,-1.7],index=['two','four','five'])
frame2['debt']=varframe2Out[20]:        year   state  pop  debtone    2000    Ohio  1.5   NaNtwo    2001    Ohio  1.7  -1.2three  2002    Ohio  3.6   NaNfour   2001  Nevada  2.4  -1.5five   2002  Nevada  2.9  -1.7
为不存在的列赋值会创建一个新列,关键字del用于删除列

del frame2['eastern']frame2.columnsOut[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)frame3Out[6]:       Nevada  Ohio2000     NaN   1.52001     2.4   1.72002     2.9   3.6
也可以对结果转置

frame3.TOut[7]:         2000  2001  2002Nevada   NaN   2.4   2.9Ohio     1.5   1.7   3.6
跟Series一样,values属性也会以二维数组形式返回DataFrame中的数据

frame3.valuesOut[11]: array([[ nan,  1.5],       [ 2.4,  1.7],       [ 2.9,  3.6]])
二:索引对象

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

 obj=frame3.indexobjOut[13]: Int64Index([2000, 2001, 2002], dtype='int64', name='year')
Index对象是不能修改的,用户不能对其修改。












0 0
原创粉丝点击