看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.from_dummies
函数用于将独热编码(One-Hot Encoding)还原为原始的分类变量。独热编码是一种将分类变量转换为多个二进制列的编码方式,而 from_dummies
则可以将这些二进制列重新合并为原始的分类变量。
从虚拟变量的DataFrame创建分类DataFrame。是 get_dummies() 的反向操作。
pandas.from_dummies(data, sep=None, default_category=None)
传递的虚拟数据的列应仅包含1和0,或布尔值。
data (pandas.DataFrame):
sep (str, optional):
None
,即自动检测列名的分隔符。default_category (str, optional):
None
,即没有默认类别。pandas.from_dummies
主要用于将经过独热编码的数据还原为原始的分类变量。例如,当你使用机器学习算法时,通常会对分类变量进行独热编码。但在一些情况下,例如在解释模型输出或需要对数据进行还原处理时,你可能需要将这些编码列还原为原始的分类变量。
df = pd.DataFrame({"a": [1, 0, 0, 1], "b": [0, 1, 0, 0],
"c": [0, 0, 1, 0]})
df
'''
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
'''
pd.from_dummies(df)
'''
0 a
1 b
2 c
3 a
'''
df = pd.DataFrame({"col1_a": [1, 0, 1], "col1_b": [0, 1, 0],
"col2_a": [0, 1, 0], "col2_b": [1, 0, 0],
"col2_c": [0, 0, 1]})
df
'''
col1_a col1_b col2_a col2_b col2_c
0 1 0 0 1 0
1 0 1 1 0 0
2 1 0 0 0 1
'''
pd.from_dummies(df, sep="_")
'''
col1 col2
0 a b
1 b a
2 a c
'''
df = pd.DataFrame({"col1_a": [1, 0, 0], "col1_b": [0, 1, 0],
"col2_a": [0, 1, 0], "col2_b": [1, 0, 0],
"col2_c": [0, 0, 0]})
df
'''
col1_a col1_b col2_a col2_b col2_c
0 1 0 0 1 0
1 0 1 1 0 0
2 0 0 0 0 0
'''
pd.from_dummies(df, sep="_", default_category={"col1": "d", "col2": "e"})
'''
col1 col2
0 a b
1 b a
2 d e
'''
假设我们有一个 DataFrame,其中包含某个变量的独热编码结果。我们希望将其还原为原始的分类变量。
import pandas as pd
# 构造独热编码后的数据
data = pd.DataFrame({
'color_red': [1, 0, 0],
'color_blue': [0, 1, 0],
'color_green': [0, 0, 1]
})
# 显示独热编码后的数据
print("独热编码后的数据:")
print(data)
# 使用 from_dummies 函数还原为原始的分类变量
original = pd.from_dummies(data)
# 输出还原后的结果
print("\n还原后的数据:")
print(original)
输出结果:
独热编码后的数据:
color_red color_blue color_green
0 1 0 0
1 0 1 0
2 0 0 1
还原后的数据:
0 red
1 blue
2 green
dtype: object
sep
参数如果列名中的类别和前缀是通过某个特定的分隔符(如 _
)连接的,我们可以指定 sep
参数进行正确的还原。
# 构造使用分隔符的独热编码数据
data_with_sep = pd.DataFrame({
'type_A': [1, 0, 0],
'type_B': [0, 1, 0],
'type_C': [0, 0, 1]
})
# 使用 from_dummies 函数还原数据并指定分隔符
original_with_sep = pd.from_dummies(data_with_sep, sep='_')
# 输出还原后的结果
print("\n使用分隔符还原后的数据:")
print(original_with_sep)
输出结果:
使用分隔符还原后的数据:
0 A
1 B
2 C
dtype: object
default_category
参数当某些行中所有独热编码的值都为 0 时,可以使用 default_category
参数指定默认类别。
# 构造包含零向量的独热编码数据
data_with_zeros = pd.DataFrame({
'item_A': [1, 0, 0],
'item_B': [0, 0, 0],
'item_C': [0, 1, 0]
})
# 使用 from_dummies 函数还原数据并指定默认类别
original_with_default = pd.from_dummies(data_with_zeros, default_category='Unknown')
# 输出还原后的结果
print("\n使用默认类别还原后的数据:")
print(original_with_default)
输出结果:
使用默认类别还原后的数据:
0 A
1 Unknown
2 C
dtype: object
pandas.from_dummies
是一个非常有用的工具,特别是在处理机器学习模型中的独热编码数据时。通过掌握这个函数的使用,可以有效地进行编码与解码转换,保持数据的一致性和可读性。
更新时间:2024-08-14 08:12:09 标签:pandas python 独热编码