Series的创建:
1、通过一维数组创建序列
arr=np.arange(10) print(arr) arr1=pd.Series(arr) print(arr1)
[0 1 2 3 4 5 6 7 8 9]
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
2、通过字典的方式创建序列
dic1 = {'a':10,'b':20,'c':30,'d':40,'e':50} print(dic1) print(pd.Series(dic1))
{'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}
a 10
b 20
c 30
d 40
e 50
3、通过DataFrame中的某一行或某一列创建序列
DataFrame的创建
1、通过二维数组创建数据框
arr=[[1,2,3],[4,5,6]] print(pd.DataFrame(arr))
0 1 2
0 1 2 3
1 4 5 6
2、通过字典的方式创建数据框
dict2={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]} print(pd.DataFrame(dict2))
a b c
0 1 4 7
1 2 5 8
2 3 6 9
dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}} print(pd.DataFrame(dic3))
one two three
a 1 5 9
b 2 6 10
c 3 7 11
d 4 8 12
3、通过数据框的方式创建数据框
df3=pd.DataFrame(dic3) print(df3[['one','three']]) print(df3['one'])
one three
a 1 9
b 2 10
c 3 11
d 4 12
a 1
b 2
c 3
d 4
序列或数据框的索引有两大用处,一个是通过索引值或索引标签获取目标数据,另一个是通过索引,可以使序列或数据框的计算、操作实现自动化对齐
s4=pd.Series(np.arange(5)) #print(s4) s4.index=['a','b','c','d','e'] print(s4) print(s4[1]) print(s4['a']) print(s4['a':'c'])
a 0
b 1
c 2
d 3
e 4
dtype: int32
1
0
a 0
b 1
c 2
dtype: int32
注意:如果通过索引标签获取数据的话,末端标签所对应的值是可以返回的
如果有两个序列,需要对这两个序列进行算术运算,这时索引的存在就体现的它的价值了—自动化对齐
s5 = pd.Series(np.array([10,15,20,30,55,80]),index = ['a','b','c','d','e','f']) s6 = pd.Series(np.array([12,11,13,15,14,16]),index = ['a','c','g','b','d','f']) print(s5 + s6)
a 22.0
b 30.0
c 31.0
d 44.0
e NaN
f 96.0
g NaN
dtype: float64
由于s5中没有对应的g索引,s6中没有对应的e索引,所以数据的运算会产生两个缺失值NaN
这里的算术结果就实现了两个序列索引的自动对齐,而非简单的将两个序列加
student是一个dataFrame print(student.head())#输出前五行 print(student.tail())#输出后五行 print(student.loc[[2,4,5,7]])#查询指定行 print(student[['Sex','Name']].head())#查询指定列 print(student.loc[:,['Sex','Name']].head())#通过loc查询指定列 print(student[(student['Age']>14)&(student['Sex']=='M')])#根据条件进行查询,小括号必须加