Python之DataFrame基础篇

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)

 

你可能感兴趣的:(python)