数据的转换

重命名轴索引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

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值