前言
本节介绍Series 和DataFrame 中基本的数据分析与处理功能。
一、重新索引reindex
Series重新索引
作用一:重新设置数据的索引,并进行排序
#创建series
obj = pd.Series([1, 2, 'test'], index=['b', 'a', 'c'])
print(obj)
#输出
b 1
a 2
c test
dtype: object
#修改索引并排序
obj1 = obj.reindex(['a', 'b', 'c', 'd'])
print(obj1)
#输出
a 2
b 1
c test
d NaN
dtype: object
作用二:重新设置数据的索引,并进行排序
# 输入
obj3 = pd.Series(['blue', 'yellow', 'red'], index=[0, 2, 5])
print(obj3)
# 输出
0 blue
2 yellow
5 red
dtype: object
# 做插值处理,使用前向值和后向值填充
obj4 = obj3.reindex(range(6), method='ffill')
print(obj4)
obj5 = obj3.reindex(range(6), method='bfill')
print(obj5)
#输出
0 blue
1 blue
2 yellow
3 yellow
4 yellow
5 red
dtype: object
0 blue
1 yellow
2 yellow
3 red
4 red
5 red
dtype: object
DataFrame重新索引
reindex 默认重新索引行,可以支持columns 关键字,重新索引列。但插值只能按行应用。
# 创建DataFrame
frame = pd.DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'],
columns= ['name', 'age', 'height'])
#输出
name age height
a 0 1 2
c 3 4 5
d 6 7 8
#重新行索引
frame2 = frame.reindex(['a', 'b', 'c', 'd'])
#输出
name age height
a 0.0 1.0 2.0
b NaN NaN NaN
c 3.0 4.0 5.0
d 6.0 7.0 8.0
#重新列索引
frame3 = frame.reindex(columns = ['name', 'age', 'sex'])
#输出
name age sex
a 0 1 NaN
c 3 4 NaN
d 6 7 NaN
#重新行、列索引
frame4 = frame.reindex(index=['a', 'b', 'c', 'd'], columns=['name', 'age', 'sex'])
#输出
name age sex
a 0.0 1.0 NaN
b NaN NaN NaN
c 3.0 4.0 NaN
d 6.0 7.0 NaN
#插值处理
frame5 = frame4.reindex(index=['a', 'b', 'd', '