Pandas 处理 dummy variable
本文我们将简单介绍一下内容
- Dummy Variable的含义
- Pandas 处理实例
本文所有代码(运行在Jupyter Notebook)以及数据集可以在我的资源主页–Pandas_Dummy_Variable进行下载
Dummy Variable
- Dummy Variable 中文称哑变量,或者称虚拟变量(这个名字总觉得怪怪的),指的是反映属性的一种变量。
- 哑变量的值通常取0或者1, 比如 0表示非本科学位, 1表示本科学位。
- 在很多数据处理中,我们都需要对数据进行哑变量处理。例如,某个数据中的月份用1-12进行表示,但是月份的值本身并没有数值上的意义,比方说2月份比1月份多,这显然是不合理的。
Dummy Variable处理步骤
我们将通过一个具体的例子来说明处理哑变量的基本处理步骤
- 例子中所使用到的数据集可以在 UCI Machine Learning Database进行下载,并且该网站对数据的属性进行了解释
- 当然,你也可以在我的资源主页–Pandas_Dummy_Variable进行下载
Step 1 读入数据
import pandas as pd
data_path = 'Bike-Sharing-Dataset/hour.csv'
riders = pd.read_csv(data_path)
riders.head()
Step 2 处理数据
- 从数据集属性的解释中,我们可以知道 season,mnth,weekday,hr,weathersit,yr,holiday 都是哑变量
- 其中yr, holiday只有两个值,用0或者1表示即可
- season,mnth,weekday,hr,weathersit 为待处理数据
- 使用get_dummies处理数据
Step 3 与原数据进行拼接
- 使用concat进行拼接
dummy_fields = ['season', 'mnth', 'weekday', 'weathersit', 'hr']
for each in dummy_fields:
# get_dummies处理数据,参数prefix是指处理之后数据的前缀
# 例如mnth共有12个值,处理之后属性mnth将会被分解成12个属性,每个属性用0或者1表示
# mnth将被分解为mnth_1, mnth_2, ..., mnth_12
# 原本mnth=1的情况将变成 mnth_1 = 1,其余mnth_2,...,mnth_12都是0
dummies = pd.get_dummies( rider.loc[:, each], prefix=each )
riders = pd.concat( [riders, dummies], axis = 1 )
Step 4 删除原数据中哑变量
- 数据中的哑变量已经处理完毕,那么原来数据的这些哑变量应该被删除
- 使用drop进行删除
# 除了哑变量之外,还有其他的变量对于训练没有任何作用,也应该被删除
fields_to_drop = ['instant', 'dteday', 'season', 'weathersit',
'weekday', 'atemp', 'mnth', 'workingday', 'hr']
data = riders.drop( fields_to_drop, axis = 1 )
data.head()
总结
- 介绍了Dummy Variable的含义
- 处理流程
- 读入数据
- 识别哑变量并获取,利用get_dummies进行处理
- 将处理后的哑变量与原数据进行拼接
- 删除原数据中不必要变量
- 本文所有代码(运行在Jupyter Notebook)以及数据集可以在我的资源主页–Pandas_Dummy_Variable进行下载