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

如何使用列表推导式自动划分pandas数据框的分类列与连续列

自动划分pandas数据集分类列与连续列的实现方案

可以通过列表推导式结合pandas的列类型判断、业务规则实现自动划分,无需手动维护列名列表。

基础版本实现

默认将字符串、category类型列识别为分类列,数值类型(int、float)识别为连续列,适合字段命名规范、数值型分类特征少的场景:

import pandas as pd
df = pd.read_csv('data.csv')

# 自动筛选分类列
categorical_columns = [col for col in df.columns if df[col].dtype in ['object', 'category']]
# 自动筛选连续列
continuous_columns = [col for col in df.columns if pd.api.types.is_numeric_dtype(df[col])]

优化版本实现

针对订单ID、邮编这类本质是分类特征、但可能被pandas识别为数值的字段,可以新增业务关键词规则过滤,适配大多数业务场景:

import pandas as pd
df = pd.read_csv('data.csv')

# 自定义分类特征关键词,可根据业务场景增减
categorical_keywords = ['id', 'state', 'city', 'zip', 'code', 'category', 'type']
# 自动筛选分类列:满足类型要求或者命中关键词的列
categorical_columns = [
    col for col in df.columns 
    if df[col].dtype in ['object', 'category'] 
    or any(keyword in col.lower() for keyword in categorical_keywords)
]
# 连续列取分类列之外的所有列即可
continuous_columns = [col for col in df.columns if col not in categorical_columns]

补充注意事项

  • 如果数据集存在数值型离散分类特征(比如1-5分的评分、0/1标识的二分类特征),可以额外增加唯一值判断规则,比如df[col].nunique() < len(df)*0.01(唯一值占比低于1%归为分类列),把规则加到分类列的筛选条件里即可。
  • 读取csv时可以通过dtype参数强制指定特殊字段的类型,比如pd.read_csv('data.csv', dtype={'start_zip': str, 'end_zip': str}),避免邮编、身份证号这类长数字被自动转成数值导致精度丢失、分类错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:27:00