Series对象操作
上回说到Series可以看做是带索引的一维数组,也可以看做是字典,下面来分别说不同看法下的Series对象可以有哪些操作。
看做字典时属性查看方法
#创建一个Series对象
data=pd.Series(np.linspace(0.25,1,4),index=['a','b','c','d'])
print(data)
print('查看索引',data.keys())
print('查看键值',list(data.items()))
print('检查键','a' in data)
data['e']=1.25 #增加值
print('增加值','\n',data,sep='')
'''
运行结果
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
查看索引 Index(['a', 'b', 'c', 'd'], dtype='object')
查看键值 [('a', 0.25), ('b', 0.5), ('c', 0.75), ('d', 1.0)]
检查键 True
增加值
a 0.25
b 0.50
c 0.75
d 1.00
e 1.25
dtype: float64
dtype: float64
'''
类一维数组时切片、索引方法
print('显式索引切片','\n',data['a':'c'],sep='')
print('隐式索引切片','\n',data[:2],sep='')
print('复杂索引','\n',data[['a','c']],sep='')
print('掩码索引','\n',data[(data>0.3)&(data<0.8)],sep='')
'''
运行结果
显式索引切片
a 0.25
b 0.50
c 0.75
dtype: float64
隐式索引切片
a 0.25
b 0.50
dtype: float64
复杂索引
a 0.25
c 0.75
dtype: float64
掩码索引
b 0.50
c 0.75
dtype: float64
'''
默认取值为显式,切片为隐式
data=pd.Series(['a','b','c','d'],index=[3,2,1,0])
print(data)
print('取值为显式','\n',data[1],sep='')
print('切片为隐式','\n',data[1:3],sep='')
'''
运行结果
3 a
2 b
1 c
0 d
dtype: object
取值为显式
c
切片为隐式
2 b
1 c
dtype: object
'''
索引器
data=pd.Series(['a','b','c','d'],index=[3,2,1,0])
print(data)
print('取值为显式','\n',data[1],sep='')
print('切片为隐式','\n',data[1:3],sep='')
print(data.loc[0]) #loc切片取值都显式
print(data.iloc[0]) #iloc切片取值都隐式
'''
运行结果
3 a
2 b
1 c
0 d
dtype: object
取值为显式
c
切片为隐式
2 b
1 c
dtype: object
d
a
'''
DataFrame对象操作
dataframe对象类似二维数组和结构化数组,有时像若干Series对象构成的字典。
类字典
类字典操作中可以用data['column']
取列的值(column为列名)
也可以用data.column
属性方式取值,且二者结果相同data.column is data['column']
返回值为True
注意:属性方式在列名与方法重名时失效,因此减少属性方式的使用是稳妥的。
类二维数组
查看数组值data.values
行列转置data.T
获取一行数据data.values[0]
获取一列数据data['column']
切片、取值
对于单个标签取值时,为列操作
但当使用标签切片时,为行操作
与Series相同,也可以使用掩码过滤
a=np.array([[90,92,93],
[60,75,87],
[33,67,26],
[86,34,90]])
data=pd.DataFrame(a,index=['Zhangfei','Guanyu','Zhaoyun','Machao'],
columns=['English','Chinese','Math'])
print(data)
print(data['English'])
print(data['Zhangfei':'Machao'])
print(data[data['English']>80])
'''
运行结果
English Chinese Math
Zhangfei 90 92 93
Guanyu 60 75 87
Zhaoyun 33 67 26
Machao 86 34 90
Zhangfei 90
Guanyu 60
Zhaoyun 33
Machao 86
Name: English, dtype: int32
English Chinese Math
Zhangfei 90 92 93
Guanyu 60 75 87
Zhaoyun 33 67 26
Machao 86 34 90
English Chinese Math
Zhangfei 90 92 93
Machao 86 34 90
'''
索引器loc、iloc
同理,loc全为显式操作,iloc全为隐式操作
注意:显式切片时,左右皆包含,而隐式切片操作时,左含右不含
print(data.loc[:'Zhaoyun',:'Chinese'])
print(data.iloc[:3,:2])
'''
运行结果
English Chinese
Zhangfei 90 92
Guanyu 60 75
Zhaoyun 33 67
English Chinese
Zhangfei 90 92
Guanyu 60 75
Zhaoyun 33 67
'''
ix索引器可以混合索引,但是牺牲了代码可读性,强烈不建议使用