python astype(‘category‘), 编码和标签对应,categories 和 code 映射为字典

在一些机器学习算法中,经常要对数据进行编码转换,转换后需要查询标签和编码的对应关系,可以使用以下代码处理。

但是注意下面代码使用的是 astype(‘category’)它和pd.Category(…)是不一样的,具体区别请参考文章python-.astype(‘categorical’)和`pd.Category(…)`之间的熊猫区别 -Python-编程之家

import pandas as pd

# 创建数据集
df = pd.DataFrame.from_dict(
            {
            'col1': ['A', 'B', 'C', 'B', 'A', 'D'],
            'col2': ['aa', 'bb', 'bb', 'aa', 'dd', 'dd'],
            'col3': ['yes', 'yes','no','no','yes','yes']
            }
            ,orient='columns')
# df 
#   col1 col2 col3
# 0    A   aa  yes
# 1    B   bb  yes
# 2    C   bb   no
# 3    B   aa   no
# 4    A   dd  yes
# 5    D   dd  yes

# 转换为分类数据
df = df.astype('category') # 可以指定特定的列转为分类数据 df['col1'] = df['col1'].astype('category')

# 将标签数据转换为编码
df_code = pd.DataFrame({col: df[col].cat.codes for col in df}, index=df.index)

# df_code 
#    col1  col2  col3
# 0     0     0     1
# 1     1     1     1
# 2     2     1     0
# 3     1     0     0
# 4     0     2     1
# 5     3     2     1

# 将编码和标签一一对应,转为字典,方便查询
df_code_dict = {col: {code: category for code, category in enumerate(df[col].cat.categories)} for col in df}
# df_code_dict 
# {'col1': {0: 'A', 1: 'B', 2: 'C', 3: 'D'},
#  'col2': {0: 'aa', 1: 'bb', 2: 'dd'},
#  'col3': {0: 'no', 1: 'yes'}}

参考文章:

Python:字符型变量astype('category').cat.codes 字典映射关系存储以及应用-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值