离散特征的独热编码
先按照示例代码过一遍,然后完成下列题目
现在在py文件中 一次性处理data数据中所有的连续变量和离散变量
1. 读取data数据
2. 对离散变量进行one-hot编码
3. 对独热编码后的变量转化为int类型
4. 对所有缺失值进行填充
注意是py文件中,所以每一步的输出是否正确需要你来使用debugger功能来逐步查看
注意此时你可以借助下面的调试控制台 来进行值的查看
注意:这里区分离散变量仅仅通过object类型,实际中还需要结合对数据的认识,这里为了方便没有考虑现实意义。
1. 读取data数据
# 读取数据
import pandas as pd
data = pd.read_csv('data.csv')
2. 对离散变量进行one-hot编码
discrete_lists = [] # 新建一个空列表,用于存放离散变量名
for discrete_features in data.columns:
if data[discrete_features].dtype == 'object':#找字符串
discrete_lists.append(discrete_features)
# 离散变量独热编码
data = pd.get_dummies(data, columns=discrete_lists, drop_first=True)
print("data 列名:", data.columns)
data2 = pd.read_csv(r"data.csv")
# 使用 difference 方法获取独热编码新增特征名
new_feature_names = data2.columns.difference(data.columns)
list_final = list(new_feature_names)
print("list_final 内容:", list_final)
3. 对独热编码后的变量转化为int类型
# 接着之前的,对bool特征进行类型转换
for i in list_final:
data[i] = data[i].astype(int) # 这里的i就是独热编码后的特征名
print(data.head())
4. 对所有缺失值进行填充
# 用均值填补
# 循环遍历这个列表中的每一列
for i in data.columns:
if data[i].isnull().sum() > 0: # 找到存在缺失值的列
#计算该列的均值
mean_value = data[i].mean()
#用均值填充缺失值
data[i].fillna(mean_value, inplace=True)
data.isnull().sum()