重命名轴索引rename()
rename(index=None, columns=None, axis=None, copy=True, inplace=False, level=None)
index,columns:表示待转换的行索引和列索引。
axis:表示轴的名称,可以使用columns和index,也可以使用数字0或1
copy:表示是否复制底层的数据,默认为False
inplace:默认为False,表示是否返回新的pandas对象,如果设为True,则会忽略复制的值。
level:表示级别名称,默认为None,对于多级索引,只重命名指定的标签。
df = pd.DataFrame({'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3'],
'A':['C0','C1','C2','C3']})
print(df)
# 重命名列索引的名称,并且在原有数据上进行修改
df.rename(columns={'A':'a','B':'b','C':'c'},inplace=True)
df
---------------------------------下面是输出结果---------------------------------
A B
0 C0 B0
1 C1 B1
2 C2 B2
3 C3 B3
---------------------
a b
0 C0 B0
1 C1 B1
2 C2 B2
3 C3 B3
下面代码与上面代码结果是一样的,就是实现方式有差别
df = pd.DataFrame({'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3'],
'A':['C0','C1','C2','C3']})
print(df)
df.rename(str.lower,axis='columns')
---------------------------------下面是输出结果---------------------------------
A B
0 C0 B0
1 C1 B1
2 C2 B2
3 C3 B3
-----------------------------
a b
0 C0 B0
1 C1 B1
2 C2 B2
3 C3 B3
为行索引进行改名字
# 也可以对行索引进行重命名
df = pd.DataFrame({'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3'],
'A':['C0','C1','C2','C3']})
print(df)
df.rename({1:'q',2:'w'},axis='index')
----------------------------------下面是输出结果----------------------------------
A B
0 C0 B0
1 C1 B1
2 C2 B2
3 C3 B3
---------------------
A B
0 C0 B0
q C1 B1
w C2 B2
3 C3 B3
离散化连续数据 pd.cut()
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
x:表示要分箱的数组,必须是一维的。
bins:接收int和序列类型的数据。如果传入的是int类型的值,则表示在x范围内的等宽单元的数量(划分为多少个等间距区间);如果传入的是一个序列,则表示将x划分在指定的序列中,若不在此序列中,则为NaN.
right:是否包含右端点,决定区间的开闭,默认为True
labels:用于生成区间的标签
retbins:是否返回bin
precision:精度,默认保留三位小数
include_lowest:是否包含左端点
cut()函数会返回一个Catagorical对象,我们可以将其看作一组表示面元名称的字符串,它包含了分组的数量以及不同分类的名称。
下面是一个演示的小事例
ages = [20,22,25,27,21,23,37,31,61,45,32]
bins=[0,18,25,35,60,100]
cuts=pd.cut(ages,bins)
cuts # 结果是将这些数据划分在区间里面
-----------------------------下面是输出结果------------------------------
[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (35, 60], (25, 35], (60, 100], (35, 60], (25, 35]]
Length: 11
Categories (5, interval[int64, right]): [(0, 18] < (18, 25] < (25, 35] < (35, 60] < (60, 100]]
下面也是一个示例
pd.cut(ages,bins=bins,right=False)
-----------------------------下面是输出结果--------------------------------
[[18, 25), [18, 25), [25, 35), [25, 35), [18, 25), ..., [35, 60), [25, 35), [60, 100), [35, 60), [25, 35)]
Length: 11
Categories (5, interval[int64, left]): [[0, 18) < [18, 25) < [25, 35) < [35, 60) < [60, 100)]
哑变量处理类别型数据 pd.get_dummies()
哑变量又称拟变量,名义变量,是人为虚设的变量。用哑变量处理类别转换,事实上就是将分类变量转换为哑变量矩阵或指标矩阵,矩阵的值通常用0或1表示
pandas.dummmies(data, prefix=None, prefix_sep=' _', dummy_na=False, columns=None, spares=False, drop_first=False)
data:可接收数组, DataFrame或Series对象,表示哑变量处理的数据
prefix:表示列名的前缀,默认为None
prefix_sep:用于附加前缀作为分隔符使用,默认为'_'
dummy_na:表示是否为NaN值添加一列,默认为False
columns:表示DataFrame要编码的列名,默认为None
spares:表示虚拟列是否是稀疏的,默认为False
drop_first:是否通过从k个分类级别中删除第一个级来获得k-1个分类级别,默认为False
df1 = pd.DataFrame({'职业':['工人','学生','司机','教师','导游']})
pd.get_dummies(df1,prefix=['col_'])
输出结果中True为1,False为0
--------------------------下面是输出结果-------------------------------
col__司机 col__学生 col__导游 col__工人 col__教师
0 False False False True False
1 False True False False False
2 True False False False False
3 False False False False True
4 False False True False False