如何对DataFrame特定列应用向量化操作?以泰坦尼克号数据集为例
泰坦尼克号数据集部分列归一化方案
核心思路
只对指定数值列做归一化,保留所有object类型列,同时跳过survived这类无需修改的数值(布尔)列。
1. 筛选目标列
先找出所有需要归一化的数值列:排除survived,同时避开object类型列。
import pandas as pd from sklearn.preprocessing import MinMaxScaler # 假设已加载titanic数据集 # titanic = pd.read_csv("titanic.csv") # 定义无需修改的数值列 exclude_cols = ["survived"] # 筛选出要归一化的数值列:所有数值列 - 排除列 target_cols = titanic.select_dtypes(include=["int64", "float64"]).columns.difference(exclude_cols)
2. 执行归一化
这里用常用的Min-Max归一化(将数值缩放到0-1区间),提供两种实现方式:
方式一:覆盖原列
直接替换原始数值列,节省存储空间:
scaler = MinMaxScaler() # 对目标列做归一化并替换原数据 titanic[target_cols] = scaler.fit_transform(titanic[target_cols])
方式二:保留原列,生成归一化新列
如果需要保留原始数值,给归一化后的列加后缀区分:
scaler = MinMaxScaler() # 生成新列名 normalized_col_names = [f"{col}_normalized" for col in target_cols] # 赋值新列 titanic[normalized_col_names] = scaler.fit_transform(titanic[target_cols])
3. 验证结果
确认处理后的数据符合预期:
# 查看前5行数据 print(titanic.head()) # 检查survived列是否仍为0/1 print(titanic["survived"].unique()) # 检查归一化列的取值范围(Min-Max后应为0-1) print(titanic[target_cols].describe())
内容的提问来源于stack exchange,提问作者pouya
相关产品推荐
相关产品推荐

