重命名轴索引
当数据经过清洗之后,这些数据并不能直接拿来做分析建模,所以为了进一步对数据进行分析,需要对数据进行一些合理的转换,使这些数据更加符合分析的要求。
数据转换是指数据从一种表现形式变为另一种表现形式的过程,具体包括重命名轴索引、离散化和面元划分、计算指标/哑变量。
重命名索引是数据分析中比较常见的操作,Pandas中提供了一个rename()方法来重命名个别列索引或行索引的标签或名称,该方法的语法格式如下:
rename(mapper = None,index = None,columns = None,axis = None,copy = True,
inplace = False,level = None)
上述方法中常用参数表示的含义如下:
(1) index,columns:表示对行索引名或列索引名的转换。
(2) axis:表示轴的名称,可以使用index或columns,也可以使用数字0或1。
(3) copy:表示是否复制底层的数据,默认为False。
(4) inplace:默认为False,表示是否返回新的Pandas对象。如果设为True,则会忽略复制的值。
(5) level:表示级别名称,默认为None。对于多级索引,只重命名指定的标签。
为了能够让大家更好地理解,接下来,通过一段示例代码来演示如何使用rename()方法重命名列索引的名称,具体代码如下。
In [39]: import pandas as pd
df = pd.DataFrame({'A':['A0', 'A1', 'A2', 'A3'],'B':['B0', 'B1', 'B2', 'B3'],
'C':['C0', 'C1', 'C2', 'C3']})
df
Out[39]:
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
In [40]: # 重命名列索引的名称,并且在原有数据上进行修改
df.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace=True)
df
Out[40]:
a b c
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
上述示例中,创建了一个4行3列的DataFrame对象df,其中列索引的名称为A、B、C,然后调用rename()方法直接将df的每个列索引名称重命名为a、b、c。从输出结果看出,列索引的名称发生了变化,变化前后的效果如图1所示。
图1 重命名列索引示例
除此之外,还可以根据str中提供的使字符串变成小写的功能函数lower()来重命名索引的名称,无需再使用字典逐个进行替换,具体示例代码如下。
In [41]: import pandas as pd
df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3']})
df.rename(str.lower, axis='columns')
Out[41]:
a b c
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
使用rename()方法也可以对行索引进行重命名,示例代码如下。
In [42]: import pandas as pd
df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3']})
df.rename(index={1: 'a', 2: 'b'}, inplace=True)
df
Out[42]:
A B C
0 A0 B0 C0
a A1 B1 C1
b A2 B2 C2
3 A3 B3 C3
值得一提的是,参数index与columns的使用方式相同,都可以接收一个字典,其中字典的键代表旧索引名,字典的值代表新索引名。