索引操作
- series类对象属于一维结构,只有行索引,儿dataframe类对象属于二维结构,他同时拥有行索引和列索引,所以他们的索引操作也有所不同
series的索引操作
- 既可以通过索引的名称获取也可以通过索引的位置来获取
ser_obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
ser_obj[0] # 通过索引位置进行获取数据
ser_obj['a'] #通过索引名称进行获取
out:1
- 切片:使用位置进行切片和列表切片一样既包含起始点不包含终止点,如果使用索引名称进行切片,既包含起始点也包含终止点。
ser_obj[0:2] # 使用索引位置进行切片
a 1
b 2
dtype: int64
ser_obj['a':'c'] #使用索引名称进行切片
a 1
b 2
c 3
dtype: int64
*切片获取不连续的数据
ser_obj[::2] #使用索引位置进行切片
a 1
c 3
e 5
dtype: int64
ser_obj[['a','c','e']] #使用索引名称进行切片
a 1
c 3
e 5
dtype: int64
- 布尔索引同样适用
ser_obj[ser_obj>2]
c 3
d 4
e 5
dtype: int64
DataFrame的索引操作
- DataFrame的每列数据都是一个Series对象,我们可以通过列索引进行获取
import numpy as np
arr = np.arange(12).reshape(3,4)
arr_df = pd.DataFrame(arr,columns=['a','b','c','d'])
arr_df
OUT:a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
arr_df[['a','c']]
OUT:a c
0 0 2
1 4 6
2 8 10
arr_df[0:1][['a','b']]
OUT:a b
0 0 1
算术运算与数据对齐
- pandas在执行算术运算时,会按照索引进行对齐。Series根据行索引对齐,DataFrame是根据行索引和列索引对齐
obj_1 = pd.Series(range(10,13))
obj_2 = pd.Series(range(20,25))
obj_1 + obj_2 #使用NaN进行填充
OUT:
0 30.0
1 32.0
2 34.0
3 NaN
4 NaN
dtype: float64
obj_1.add(obj_2,fill_value=0) # 填充值改为0
OUT:
0 30.0
1 32.0
2 34.0
3 23.0
4 24.0
dtype: float64
数据排序
- pandas中按索引进行排序的方法是:sort_index()方法。该方法可以使用行索引或者列索引进行排序
- sort_index(ax