DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
备注:虽然DataFrame是以二维结构保存数据的,但仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构。
创建1:直接传入一个由等长列表或NumPy数组组成的字典data={'state':['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year':[2000, 2001, 2002, 2001, 2002, 2003],
'pop':[1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame=pd.DataFrame(data)
#只显示前5行
frame.head()
#指定序列顺序
pd.DataFrame(data,columns=['year','state','pop'])
在指定序列顺序时,如果传入的列在数据中找不到,就会在结果中产生缺失值,如
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four',
'five', 'six'])
frame2
获取列的方式
通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series,如
#两种方式均可 frame2['state'] frame2.year获取行的方式
通过位置或名称的方式进行获取,比如用loc属性,如
frame2.loc['three']修改列的方式
列可以通过赋值的方式进行修改,如
frame2['debt'] = 16.5 frame2 #或者 import numpy as np frame2['debt'] = np.arange(6.) frame2
备注:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值,如
val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five']) frame2['debt']=val frame2添加删除列
添加列
#判断state是否在东部 frame2['eastern'] = frame2.state == 'Ohio' frame2
删除列
del frame2['eastern']创建2:嵌套字典
pop = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3=pd.DataFrame(pop)
frame3
#转置表现
frame3.T
#指定索引顺序
pd.DataFrame(pop, index=[2001, 2002, 2003])
#由Series组成的字典
pdata = {'Ohio': frame3['Ohio'][:-1],
'Nevada': frame3['Nevada'][:2]}
pd.DataFrame(pdata)
#指定索引和序列的属性,命名
frame3.index.name = 'year'
frame3.columns.name = 'state'
frame3



