基于pandas将类别属性转化为数值属性的方法

Dylan
Dylan
发布时间:2026-10-11| 3人浏览过
原创

在数据预处理中,将类别属性转化为数值属性是常见需求。本文介绍两种基于pandas的处理方法:针对无大小意义的离散特征使用get_dummies进行One-Hot编码;针对有大小意义的特征,通过字典映射将其转换为有序的数值。

离散特征编码的两种策略

处理离散型特征时,通常根据特征本身的语义属性选择不同的编码方式:

  • 无大小意义的离散特征:例如颜色(红、绿、蓝),类别之间没有顺序关系。这类特征适合使用 One-Hot 编码,将其转化为多个布尔列。
  • 有大小意义的离散特征:例如尺码(S、M、L、XL),类别之间存在明确的顺序关系。这类特征适合直接进行数值映射,保留其大小逻辑。

有大小意义的特征:数值映射

对于具有明确顺序的类别特征,可以直接构建映射字典,利用 pandas.Series.map() 方法进行转换。

操作步骤

  1. 定义映射字典:根据业务逻辑,将类别字符串映射为对应的整数值。
  2. 执行映射:使用 df['column_name'].map(mapping_dict) 完成转换。
import pandas as pd

# 创建示例数据
df = pd.DataFrame([
   ['green', 'M', 10.1, 'class1'], 
   ['red', 'L', 13.5, 'class2'], 
   ['blue', 'XL', 15.3, 'class1']])

# 设置列名
df.columns = ['color', 'size', 'prize', 'class label']

# 1. 处理有大小意义的 'size' 特征
size_mapping = {
   'XL': 3,
   'L': 2,
   'M': 1
}
df['size'] = df['size'].map(size_mapping)

# 2. 处理类别标签 'class label'
# 使用 enumerate 自动分配索引
class_mapping = {label:idx for idx,label in enumerate(set(df['class label']))}
df['class label'] = df['class label'].map(class_mapping)

无大小意义的特征:One-Hot 编码

对于没有顺序关系的类别特征(如颜色),One-Hot 编码能避免引入错误的数值大小关系。在 pandas 中,可以使用 pd.get_dummies() 函数快速实现。

操作步骤

  1. 调用函数:直接对 DataFrame 或特定列调用 pd.get_dummies()。
  2. 结果处理:函数会为每一类生成一个新的布尔列(0 或 1)。
# 使用 get_dummies 进行 one-hot 编码
# 该函数会为某一列中的每个唯一字符串创建新列
pd.get_dummies(df)

总结

根据特征是否具有顺序关系,选择合适的编码方式至关重要。数值映射保留了有序信息,而 One-Hot 编码则避免了无序特征间的虚假大小关联。掌握这两种方法,能有效提升数据预处理的质量。

以上就是基于pandas将类别属性转化为数值属性的方法的详细内容,更多关于pandas数据预处理、特征编码的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。