You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中快速将多特征分类数据转为数值型的最优方法是什么?

嘿,我太懂你说的R里两行搞定分类特征转数值的爽感了!用Python的pandas处理这个蘑菇数据集其实也一样高效,甚至代码量差不多,我给你两种实用的方案:

加载蘑菇数据集并转换为数值型数据

首先第一步是把数据加载到pandas DataFrame里,和R的逻辑一致,因为这个数据集没有表头,记得指定header=None:

import pandas as pd

# 加载数据,所有特征均为分类型
mushrooms = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data", header=None)

接下来就是把分类特征转换成数值型,这里有两种常用方法,你可以根据需求选:

方法1:一行代码批量转换(类似R的简洁风格)

这种方法和R里的因子转换逻辑高度相似,直接对所有列做类别编码:

# 对每一列进行分类→数值的转换
mushrooms_numeric = mushrooms.apply(lambda col: col.astype('category').cat.codes, axis=0)

简单解释下:astype('category')把列转为pandas的类别类型,cat.codes会自动给每个唯一的分类值分配一个整数编码,完全是按列处理,完美匹配你的需求。

方法2:更灵活的编码器方案(适合后续复用)

如果你需要对特定列单独处理,或者之后要对新数据做相同编码(避免训练/测试数据编码不一致),可以用scikit-learn的LabelEncoder:

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
# 遍历所有列完成转换
for col in mushrooms.columns:
    mushrooms[col] = encoder.fit_transform(mushrooms[col])

这种方法的优势是可以保存encoder对象,后续遇到同结构的新数据时,直接用encoder.transform()就能得到一致的编码。

转换完成后,你可以用mushrooms_numeric.head()或者mushrooms.head()查看前几行数据,确认所有分类特征都已经变成了整数数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:46:30