Python中的虚拟变量(dummy variables)

虚拟变量(dummy variables)

虚拟变量,也叫哑变量和离散特征编码,可用来表示分类变量、非数量因素可能产生的影响。

① 离散特征的取值之间有大小的意义
例如:尺寸(L、XL、XXL)
离散特征的取值有大小意义的处理函数map
pandas.Series.map(dict)
参数 dict:映射的字典

② 离散特征的取值之间没有大小的意义

pandas.get_dummies

例如:颜色(Red,Blue,Green)

处理函数:

get_dummies(data,prefix=None,prefix_sep="_",dummy_na=False,columns=None,drop_first=False)

① data   要处理的DataFrame
② prefix 列名的前缀,在多个列有相同的离散项时候使用
③ prefix_sep 前缀和离散值的分隔符,默认为下划线,默认即可
④ dummy_na 是否把NA值,作为一个离散值进行处理,默认为不处理
⑤ columns 要处理的列名,如果不指定该列,那么默认处理所有列
⑥ drop_first 是否从备选项中删除第一个,建模的时候为避免共线性使用

# -*- coding: utf-8 -*-
import pandas

data = pandas.read_csv(
    'D:\\PDA\\4.18\\data.csv', 
    encoding='utf8'
)

data['Education Level'].drop_duplicates()

"""
博士后    Post-Doc
博士      Doctorate
硕士      Master's Degree
学士      Bachelor's Degree
副学士    Associate's Degree
专业院校  Some College
职业学校  Trade School
高中      High School
小学      Grade School
"""
educationLevelDict = {
    'Post-Doc': 9,
    'Doctorate': 8,
    'Master\'s Degree': 7,
    'Bachelor\'s Degree': 6,
    'Associate\'s Degree': 5,
    'Some College': 4,
    'Trade School': 3,
    'High School': 2,
    'Grade School': 1
}

data['Education Level Map'] = data[
    'Education Level'
].map(
    educationLevelDict
)

data['Gender'].drop_duplicates()

dummies = pandas.get_dummies(
    data, 
    columns=['Gender'],
    prefix=['Gender'],
    prefix_sep="_",
    dummy_na=False,
    drop_first=False
)

dummies['Gender'] = data['Gender']



  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python可以使用scikit-learn库的OneHotEncoder来将分类字段转换为虚拟变量。例如,如果有一个名为“类型”的分类字段,可以将它转换为三个虚拟变量,即“类型_A”,“类型_B”和“类型_C”。 ### 回答2: 在Python,我们可以使用pandas库的get_dummies函数将分类字段转化为虚拟变量。下面是一个简单的示例: 假设我们有一个DataFrame对象df,其有一个名为"category"的列,它包含了不同的分类值。 首先,我们需要导入pandas库: ```python import pandas as pd ``` 然后,我们可以使用get_dummies函数将"category"列转化为虚拟变量: ```python dummy_variables = pd.get_dummies(df["category"]) ``` 这将创建一个新的DataFrame对象dummy_variables,它包含了原始DataFrame"category"列的每个不同值作为列名,并将对应的行标记为1或0。 如果原始DataFrame的"category"列包含了n个不同的值,那么新的DataFrame对象dummy_variables将会有n列。 最后,我们可以将新的DataFrame对象dummy_variables与原始DataFrame对象合并: ```python df = pd.concat([df, dummy_variables], axis=1) ``` 请注意,合并时需要指定axis=1,表示按列合并。这将会将虚拟变量添加到原始DataFrame对象,并创建新的列。 这样,我们就成功地将一个分类字段转化为虚拟变量。 ### 回答3: Python可以使用pandas库的get_dummies()函数将一个分类字段转化为虚拟变量。 首先,导入pandas库: ``` import pandas as pd ``` 然后,创建一个包含分类字段的DataFrame: ``` df = pd.DataFrame({'category': ['A', 'B', 'A', 'C', 'B']}) ``` 接下来,使用get_dummies()函数将分类字段转化为虚拟变量: ``` dummy_df = pd.get_dummies(df['category']) ``` 结果将生成一个包含虚拟变量的新DataFrame: ``` A B C 0 1 0 0 1 0 1 0 2 1 0 0 3 0 0 1 4 0 1 0 ``` 每个分类值对应的虚拟变量,原来的分类值出现的位置为1,其余位置为0。 最后,可以将原来的DataFrame和新生成的虚拟变量DataFrame合并成一个新的DataFrame: ``` new_df = pd.concat([df, dummy_df], axis=1) ``` 这样就完成了将一个分类字段转化为虚拟变量的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值