DataFrame 表示矩阵数据表,有行索引和列索引。
DataFrame相当于有表格,有行表头和列表头
a=pd.DataFrame(np.random.rand(4,5),index=list("ABCD"),columns=list('abcde'))
print(a)
DataFrame基本操作
增加列或修改列
a['f']=[1,2,3,4]
a['e']=10
print(a)
增加行或修改行
a.ix['D']=10
print(a)
合并
S=pd.DataFrame(np.random.rand(4,6),index=list('EFGH'),columns=list('abcdef'))
a=a.append(S)
print(a)
切片
print(a[['b','e']]) #取'b','e'列
print(a.loc['A':'D',['a','c','f']]) #取'A'-'D'行'a','c','f'列
减少行或减少列
a=a.drop(['C','D']) #删除'C'行和'D'
print(a)
a=a.drop('a',axis=1) #删除'a'列,axis=0表示行,axis=1表示列
print(a)
缺省值处理
a.iloc[2,3]=None #取第三行第4列值设为None
a.iloc[4,0]=None #取第五行第1列值设为None
print(a)
a=a.fillna(5) #缺省值处(即NaN处填充为5)
print(a)
#缺省值去行即有缺省值的把这一行都去掉
a.iloc[2,3]=None
a.iloc[4,0]=None
print(a)
a=a.dropna() #删除缺省值为NaN的行
print(a)
构建方式
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year' : [2000, 2001, 2002, 2001, 2001, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
print(frame)
'''
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2001 2.9
5 Nevada 2003 3.2
'''
对于大型 DataFrame,head 方法只选出前5行
frame.head()
'''
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2001 2.9
'''
指定顺序
print(pd.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 2001 Nevada 2.9
5 2003 Nevada 3.2
'''
传的列不在字典中
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four', 'five', 'six'])
print(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 2001 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN
'''
行也可以通过位置或特殊属性 loc 进行选取
print(frame2.loc['three'])
year 2002
state Ohio
pop 3.6
debt NaN
Name: three, dtype: object
调换行和列
print(frame.T)
自动选择适合所有列的类型
print(frame2.values)
array([[2000, 'Ohio', 1.5, nan],
[2001, 'Ohio', 1.7, -1.2],
[2002, 'Ohio', 3.6, nan],
[2001, 'Nevada', 2.4, -1.5],
[2001, 'Nevada', 2.9, -1.7],
[2003, 'Nevada', 3.2, nan]], dtype=object)