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

Python中如何将城市字符串列表转换为数字编码用于数据挖掘?

类别特征的标签编码实现(Python)

核心技术关键词

  • 标签编码(Label Encoding):将离散类别型字符串映射为连续整数的编码方式,是数据挖掘中预处理类别特征的常用手段,适用于无顺序的类别特征(如城市名称)。
  • 类别特征预处理:你的需求属于数据挖掘流程中,对非数值型类别特征的转换环节,目的是将字符串特征转换为模型可识别的数值格式。

实现方式

1. 手动实现(无需第三方库)

适合快速验证需求,可灵活控制编码顺序:

cities = ['new york', 'los angeles', 'miami', 'new york', 'dallas']

# 按原列表中城市首次出现的顺序建立映射(从1开始编码)
city_mapping = {city: idx + 1 for idx, city in enumerate(dict.fromkeys(cities))}
encoded_list = [city_mapping[city] for city in cities]

print(encoded_list)  # 输出: [1, 2, 3, 1, 4]
  • 若需要按字母排序生成编码,将dict.fromkeys(cities)替换为sorted(set(cities))即可。

2. 使用scikit-learn的LabelEncoder

适合集成到机器学习预处理流水线,支持大规模数据处理:

from sklearn.preprocessing import LabelEncoder
from collections import OrderedDict

cities = ['new york', 'los angeles', 'miami', 'new york', 'dallas']

# 按原列表出现顺序定义唯一类别
unique_cities = list(OrderedDict.fromkeys(cities))
le = LabelEncoder()
le.fit(unique_cities)

# 生成编码并转为从1开始
encoded_list = le.transform(cities) + 1

print(encoded_list)  # 输出: [1, 2, 3, 1, 4]
  • 若不指定顺序,LabelEncoder默认按字母排序对类别编码。

3. 使用pandas的factorize方法

pandas内置工具,简洁高效,默认按类别首次出现顺序编码:

import pandas as pd

cities = ['new york', 'los angeles', 'miami', 'new york', 'dallas']

# factorize返回编码(从0开始)和唯一类别数组
encoded_arr, unique_cities = pd.factorize(cities)
# 转为从1开始的编码
encoded_list = encoded_arr + 1

print(encoded_list)  # 输出: [1, 2, 3, 1, 4]

内容的提问来源于stack exchange,提问作者MEGAH ADI WICAKSONO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:27:26