将分类代码转换为分类值
Convert Categorical codes to Categorical values
我有一个数据框:
ga_deviceCategory_codes ga_channelgrouping_codes ga_sourceMedium_codes
1.0 6.0 9.0
1.0 6.0 9.0
我使用以下方法将分类值转换为分类代码:
data['ga_deviceCategory_codes'] = data['ga_deviceCategory'].astype('category').cat.codes
data['ga_channelgrouping_codes'] = data['ga_channelgrouping'].astype('category').cat.codes
data['ga_sourceMedium_codes'] = data['ga_sourceMedium'].astype('category').cat.codes
现在如何从上述代码中恢复到原始分类值?
并非 100% 满足您的要求,但您是否尝试过,例如:
data['ga_sourceMedium_codes'].cat.categories
类别映射由 Pandas 内部存储,但不作为常规 Python 字典存储。你可以自己创建这样一个字典来反向映射:
df['mycol'] = df['mycol'].astype('category')
d = dict(enumerate(df['mycol'].cat.categories))
然后向后映射:
df['mycol_codes'] = df['mycol'].cat.codes
df['mycol_reversed'] = df['mycol_codes'].map(d)
请谨慎使用此方法。确保在转换为类别后立即创建字典。将数据帧与分类序列连接时,您可能会发现映射发生变化。
您可以按如下方式进行:
df['col'] = df['col'].astype('category')
my_list = df['col'].cat.codes
my_values = df['col'].tolist()
result= dict(zip(my_list,my_values))
首先将目标列转换为 'category' 类型,然后使用 .cat.codes 对其进行标签编码。然后在代码的第 3 行中,创建了一个目标列实数值列表,并在第 4 行中通过 zip,将 cat.codes 和相关实数值实现的每个值视为字典的一个元素。
我有一个数据框:
ga_deviceCategory_codes ga_channelgrouping_codes ga_sourceMedium_codes
1.0 6.0 9.0
1.0 6.0 9.0
我使用以下方法将分类值转换为分类代码:
data['ga_deviceCategory_codes'] = data['ga_deviceCategory'].astype('category').cat.codes
data['ga_channelgrouping_codes'] = data['ga_channelgrouping'].astype('category').cat.codes
data['ga_sourceMedium_codes'] = data['ga_sourceMedium'].astype('category').cat.codes
现在如何从上述代码中恢复到原始分类值?
并非 100% 满足您的要求,但您是否尝试过,例如:
data['ga_sourceMedium_codes'].cat.categories
类别映射由 Pandas 内部存储,但不作为常规 Python 字典存储。你可以自己创建这样一个字典来反向映射:
df['mycol'] = df['mycol'].astype('category')
d = dict(enumerate(df['mycol'].cat.categories))
然后向后映射:
df['mycol_codes'] = df['mycol'].cat.codes
df['mycol_reversed'] = df['mycol_codes'].map(d)
请谨慎使用此方法。确保在转换为类别后立即创建字典。将数据帧与分类序列连接时,您可能会发现映射发生变化。
您可以按如下方式进行:
df['col'] = df['col'].astype('category')
my_list = df['col'].cat.codes
my_values = df['col'].tolist()
result= dict(zip(my_list,my_values))
首先将目标列转换为 'category' 类型,然后使用 .cat.codes 对其进行标签编码。然后在代码的第 3 行中,创建了一个目标列实数值列表,并在第 4 行中通过 zip,将 cat.codes 和相关实数值实现的每个值视为字典的一个元素。