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

如何检测数据集中的分类变量?含int64/float64类型变量的处理

如何用Python识别数值类型的分类变量

直接给你几种实用的解决方案:

1. 基于唯一值占比/数量自动判断

分类变量的核心特征是取值离散且重复度高,可以通过唯一值的数量或占比来区分:

  • 列的唯一值数量远小于样本总量(比如占比低于10%)
  • 或者唯一值的绝对数量很少(比如不超过20个)

用Python实现批量判断的代码如下:

import pandas as pd

def is_categorical_numeric(series, unique_threshold=20, ratio_threshold=0.1):
    total_samples = len(series)
    unique_count = series.nunique()
    # 满足任一条件则判定为分类变量
    return unique_count <= unique_threshold or (unique_count / total_samples) <= ratio_threshold

# 加载你的数据集
df = pd.read_csv("your_dataset.csv")

# 筛选所有int64/float64类型的列
numeric_cols = df.select_dtypes(include=['int64', 'float64']).columns

# 批量判断并输出结果
for col in numeric_cols:
    if is_categorical_numeric(df[col]):
        print(f"列 {col} 大概率是分类变量")
    else:
        print(f"列 {col} 是连续数值变量")

2. 结合业务知识手动标记

有些数值型分类变量有明确业务含义(比如0=男/1=女、1=本科/2=硕士),直接手动指定更准确:

# 列出已知的数值分类列
categorical_numeric_cols = ['gender_code', 'edu_level', 'marital_status']
# 转换为pandas的category类型,方便后续分析
df[categorical_numeric_cols] = df[categorical_numeric_cols].astype('category')

3. 查看取值分布确认

对拿不准的列,直接查看取值的分布情况:

# 查看目标列的取值计数
print(df['target_column'].value_counts())

如果输出里只有几个离散值,且每个值的出现次数很多,那就是分类变量;如果取值连续、每个值出现次数极少,就是连续变量。


内容的提问来源于stack exchange,提问作者Martí Castell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:05:03