DataFrame是一个表格型的数据结构,包含行索引和列索引。下面通过传入一个由等长列表组成的字典来建立一个简单的DataFrame:
import pandas as pd
data={'name':['Shawn','Jason','Cindy','Danny','Jack','Rosen','Mike'],
'English':[80,70,30,60,50,29,40],
'Math':[90,40,60,100,30,23,45],
'Chinese':[39,35,65,34,65,34,60],
'Physics':[45,76,45,86,34,34,67],
'Geography':[56,23,67,34,65,34,56]
}
frame=pd.DataFrame(data)
>>> frame
Chinese English Geography Math Physics name
0 39 80 56 90 45 Shawn
1 35 70 23 40 76 Jason
2 65 30 67 60 45 Cindy
3 34 60 34 100 86 Danny
4 65 50 65 30 34 Jack
5 34 29 34 23 34 Rosen
6 60 40 56 45 67 Mike
在jupyter中,上边的结果直接以表格的形式展现:
由于没有指定行的索引,DataFrame自动添加了行索引。可以通过以下方式定义行索引:
frame2=pd.DataFrame(data,index=['a','b','c','d','e','f','g'])
>>> frame2
Chinese English Geography Math Physics name
a 39 80 56 90 45 Shawn
b 35 70 23 40 76 Jason
c 65 30 67 60 45 Cindy
d 34 60 34 100 86 Danny
e 65 50 65 30 34 Jack
f 34 29 34 23 34 Rosen
g 60 40 56 45 67 Mike
对于大型数据,利用fame.head()可以获取前五行
>>> frame2.head()
Chinese English Geography Math Physics name
a 39 80 56 90 45 Shawn
b 35 70 23 40 76 Jason
c 65 30 67 60 45 Cindy
d 34 60 34 100 86 Danny
e 65 50 65 30 34 Jack
可以通过类似字典比较的方式或者属性的方式,将DataFrame的列获取为一个Series:
>>> frame2['name']
a Shawn
b Jason
c Cindy
d Danny
e Jack
f Rosen
g Mike
Name: name, dtype: object
用loc和iloc进行选取
对于DataFrame的行的标签索引,可以通过使用轴标签(loc)或者整数索引(iloc),从DataFrame选择行和列的子集。
其中loc通过标签的真实值进行选择:
frame3=frame2.loc[['a','c'],['English','Chinese']]
>>> frame3
English Chinese
a 80 39
c 30 65
而iloc则是通过标签输出的位置进行选择:
frame3=frame2.iloc[[0,2],[1,0]]
>>> frame3
English Chinese
a 80 39
c 30 65
转为np.array格式
frame2=frame2.as_matrix()
>>> frame2
[[39 80 56 90 45 'Shawn']
[35 70 23 40 76 'Jason']
[65 30 67 60 45 'Cindy']
[34 60 34 100 86 'Danny']
[65 50 65 30 34 'Jack']
[34 29 34 23 34 'Rosen']
[60 40 56 45 67 'Mike']]