【发布时间】:2018-12-07 17:06:10
【问题描述】:
假设我有以下数据框。
df = pd.DataFrame({'col1':[1,2,3,4,5], 'col2':list('abcab'), 'col3':list('ababb')})
我可以通过执行以下操作将分类数据转换为整数。
df['col2'] = df['col2'].astype('category')
df['col3'] = df['col3'].astype('category')
cat_columns = df.select_dtypes(['category']).columns
df[cat_columns] = df[cat_columns].apply(lambda x: x.cat.codes)
当我执行 print(df.dtypes) 时,这个转换结束时,我得到了
col1 int64
col2 int8
col3 int8
缺少所有分类信息。我可以将类别到整数的映射保存在文件中吗?我希望将来能够以编程方式反转数据帧上的转换。
编辑:我正在寻找一个可逆的过程。这意味着将所有分类列的转换保存在实际文件中。在未来的某个时间,我想获取我拥有的任何结果,其中列仍将与原始数据帧具有相同的名称,使用保存的信息进行逆变换,并根据分类数据获取结果。
【问题讨论】:
-
您在申请获取代码时删除了类别dtype。
-
在执行 cat.codes 之前如何保存它?在删除类别 dtype 之前,我愿意插入一个额外的操作。我只想要一个可逆的过程。
-
这种转变的目的是什么——这是机器学习的一部分吗?
-
@KRKirov,这是一种可能的用途。
-
大多数机器学习算法不直接处理分类编码的数据,而是处理 one-hot 编码的数据。标签编码通常仅用于对 y 数据进行编码
标签: python pandas dictionary categorical-data