You need to enable JavaScript to run this app. Python对114列类别型数值DataFrame的整体one_hot编码实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python对114列类别型数值DataFrame的整体one_hot编码实现咨询

大规模类别型数值存储DataFrame的全列独热编码实现

适用场景:114列全部为以数值形式存储的分类属性,无真实连续测量值,需批量执行独热编码
数值存储类别属性的DataFrame示例

方案选型与实现代码

方案1:pandas原生get_dummies(大内存场景首选,转换性能最优)

无需额外依赖,对纯类别列的转换速度比第三方转换器高30%以上,支持内置内存优化参数

import pandas as pd

# 输入为你的原始DataFrame(所有114列均为分类属性)
onehot_result = pd.get_dummies(
    data=raw_df,
    # 将编码值设为uint8类型,相比默认int64类型,内存占用降低87.5%
    dtype="uint8",
    # 如需将缺失值单独生成一个独热列,开启下方参数
    # dummy_na=True
)

方案2:scikit-learnOneHotEncoder(需对接建模流水线、复用转换逻辑时选用)

适合需要固定编码规则、跨数据集转换的场景,避免临时转换的规则不一致问题

import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder

# 适配大分类数据集的编码器初始化配置
onehot_encoder = OneHotEncoder(
    # 输出稀疏矩阵,避免高维度下内存溢出
    sparse_output=True,
    # 跨数据集转换时遇到未见过的类别,自动置0不报错
    handle_unknown="ignore",
    dtype=np.uint8
)

# 全列拟合并转换
encoded_sparse_matrix = onehot_encoder.fit_transform(raw_df)

# 转换为带列名的稀疏DataFrame结构
onehot_result = pd.DataFrame.sparse.from_spmatrix(
    encoded_sparse_matrix,
    columns=onehot_encoder.get_feature_names_out(raw_df.columns),
    index=raw_df.index
)

实操注意事项

  • 跳过无信息列:如果某一列只有1个唯一取值,可在编码前直接删除,这类列独热后全为1,无任何建模价值
  • 禁止提前做数值缩放:所有列本质为类别属性,任何连续值标准化、归一化操作都会破坏原有类别属性,无需执行
  • 内存兜底:如果编码后矩阵维度过高,可保留稀疏矩阵结构,无需强制转成稠密格式即可对接后续树模型、线性模型训练

内容的提问来源于stack exchange,提问作者Ela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 12:54:03