AI一点通:使用 ColumnTransformer 转换 Pandas DataFrame 的一个或多个列

ColumnTransformer:处理异质数据的利器 ColumnTransformer 是提供的一种用于对不同类型数据进行处理的工具,它允许对数据集中的不同列(或特征)应用不同的预处理步骤。例如,可以对数值型特征使用标准化,对类别型特征使用独热编码,对文本特征使用TF-IDF等。简单来说,ColumnTransformer 就是一个“列级别的转换器”,它可以对每一列应用特定的转换步骤,并且将这些转换后的列合并成一个新的特征矩阵。 阅读详情

在处理表格数据时,常常需要对一个或多个列进行转换以使它们更适合于分析或建模。在许多情况下,可以使用 Pandas 库轻松完成这些转换。然而,在处理大型数据集或构建机器学习管道时,使用 scikit-learn 的 ColumnTransformer 类来将转换应用于数据的特定列可能更有效。

这里,我们将演示如何使用自定义转换器与 scikit-learn 的 ColumnTransformer 来转换 Pandas DataFrame 的一个或多个列。

示例1:转换 NumPy 数组

让我们从一个简单的示例开始,我们有一个具有三个列的 NumPy 数组,并且我们希望将前两列转换为两个新列。

import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

class CustomTransformer(BaseEstimator, TransformerMixin):
    def __init__(self):
        pass
    
    def transform(self, X):
        # 这里,X 是一个二维的 NumPy 数组或 Pandas DataFrame
        # 将第0列和第1列转换成多列
        transformed_cols = np.column_stack([X[:, 0]**2, np.sqrt(X[:, 1])])
        # 将转换后的列作为二维 NumPy 数组返回
        return transformed_cols
    
    def fit(self, X, y=None):
        return self
    
# 示例用法
X = np.array([[1, 4, 7], [2, 9, 8], [3, 16, 9]])
transformer = ColumnTransformer(
    transformers=[('custom', CustomTransformer(), [0, 1])],
    remainder='passthrough')
# 'remainder' 参数保留未转换的任何列
transformed_X = transformer.fit_transform(X)
print(transformed_X)


在这个例子中,CustomTransformer 类接受两个输入列并将它们转换为两个输出列。ColumnTransformer 将这个转换器应用到输入数据的第0列和第1列,并保留第2列。“passthrough” 选项被用来保留其原始形式的其余列。

示例2:转换 Pandas DataFrames

现在,让我们修改之前的示例,使其适用于 Pandas DataFrame 而不是 NumPy 数组。

import pandas as pd
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

class CustomTransformer(BaseEstimator, TransformerMixin):
    def __init__(self):
        pass
    
    def transform(self, X):
        # Here, X is a pandas DataFrame
        # Transform columns 'A' and 'B' into multiple columns
        transformed_cols = pd.DataFrame({'A_squared': X['A']**2, 
                                         'B_sqrt': X['B']**0.5})
        # Return the transformed columns as a pandas DataFrame
        return transformed_cols
    
    def fit(self, X, y=None):
        return self
    
# Example usage
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 9, 16], 'C': [7, 8, 9]})
transformer = ColumnTransformer(
    transformers=[('custom', CustomTransformer(), ['A', 'B'])], 
    remainder='passthrough')
# The 'remainder' parameter preserves any columns not transformed
transformed_df = transformer.fit_transform(df)
print(transformed_df)

在此示例中,CustomTransformer 类采用两个输入列(“A”和“B”)并将它们转换为 pandas DataFrame 中的两个输出列(“A_squared”和“B_sqrt”)。 ColumnTransformer 将此转换器应用于输入数据的“A”列和“B”列,并保留“C”列。 “passthrough”选项已用于以其原始形式保留剩余的列“C”。

英文链接

英文版

最后的话

AI日新月异,但是万丈高楼拔地起,离不开良好的基础。您是否有兴趣了解人工智能的原理和实践? 不要再观望! 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写,这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者,本书都能满足您的需求。 那为什么还要等? 立即下单,开始以一种易于访问、引人入胜且实用的方式学习 AI。

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

数据科学七层武器库:从Pandas到TensorFlow的工程化工作流 数据科学不是工具堆砌,而是围绕数据生命周期构建的系统性工程。从原始数据接入、清洗与探索,到特征工程、模型训练、验证部署及持续监控,每个环节都依赖特定Python库提供的稳定接口与性能保障。NumPy作为底层计算引擎支撑着Scikit-Learn的拟合逻辑和TensorFlow的张量运算;Pandas通过dtype策略与内存优化成为千万级表格数据的事实标准;Matplotlib与Seaborn协同实现从可视化诊断到业务可解释性的跃迁。这些库共同构成AI落地的基础设施——它们不追求前沿炫技,而以可靠性、可复现性 阅读详情

相关推荐

数据科学6大核心库实战地图:NumPy/Pandas/Scikit-learn等工业级用法

数据科学不是算法堆砌,而是以NumPy为内存地基、Pandas为数据管道、Scikit-learn为工程标准、Statsmodels为统计归因、XGBoost/LightGBM为规模引擎、Matplotlib/Seaborn为沟通协议的系统性实践。其底层原理直指向量化计算、确定性数据流、防泄漏验证、可解释建模与内存可控性等关键技术价值,在电商销量预测、金融风控、广告ROI优化等高频场景中决定项目成败。本文聚焦这6个不可替代的工业级Python库,解析其在真实生产环境中的选型逻辑、性能陷阱与端到端落地范式。

xpmwgcwm的博客 436

Spring-data-jpa中用@ColumnTransformer注解加密,中文乱码问题(数据库正常,在java代码和页面中乱码)

jpa中用@ColumnTransformer注解将name字段加密,可是在数据库中解密返回的是正常值,而经过java解析后,在前端页面中还是出现了字符乱码的情况 @Column(name = "password") @NotBlank(message = "名字不能为空!") @Length(min = 2, max = 6) @ColumnTransformer( write = "HEX(AES_ENCRYPT(?, 'helloworld'))", read =.

weixin_39506322的博客 2366

用scikit-learn三天跑通第一个机器学习项目

机器学习不是抽象理论,而是可执行的工程实践。从环境配置、数据加载、标准化预处理,到模型训练、交叉验证与残差分析,scikit-learn以一致、稳定、高容错的API设计,将工业级最佳实践封装为Python开发者触手可及的能力。它依托NumPy/SciPy生态实现无缝衔接,凭借精准报错和权威文档降低调试门槛,更通过强制fit-transform分离、Pipeline封装等机制,培养正确的建模直觉。本文以加州房价回归任务为载体,聚焦Scikit-learn核心工作流,覆盖Python环境管理、真实数据探索、可复

weixin_30385925的博客 369

hibernate 列数据转换

在需要转换的model字段上添加注释 @ColumnTransformer(read="kg*1000",write="?/1000") 表结构: model: @Entity @Table(name = "testguid") public class GUID implements Serializable { @Id @Column(name = "guid") @Generat...

weixin_43632687的博客 619

【Python机器学习】零基础掌握ColumnTransformer复合估计器

主要用于在不同的特征列上应用不同的预处理步骤。在本例中虽然对于一个简单的线性回归模型,使用和不使用的效果差别不大,但其在处理多种数据类型和多步预处理流程时具有极大的便利性。主要优点在于其灵活性和整洁性,使得数据预处理变得更加高效和容易管理。优点名称描述说明灵活性可以对数据集的不同列应用不同的转换器。代码整洁通过将多个数据预处理步骤集成在一起,使代码更加整洁。易于调优可以很容易地在网格搜索中调整各个转换器的参数。缺点总结:尽管。

Mr数据杨 919

科研党必备:Zotero+Deepseek 打造AI文献阅读助手(附详细插件配置指南)

本文详细介绍了如何利用Zotero和Deepseek打造AI文献阅读助手,提升科研效率。从Zotero基础安装到中文文献处理插件茉莉花的配置,再到Deepseek API的集成与模型选择策略,全面覆盖了AI辅助阅读的关键环节。特别适合需要高效管理海量文献的科研工作者,显著提升文献筛选和分析速度。

backprop5master的博客 424

hibernate映射值类型

JDK基本类型 @Transient:用于将某个属性设为瞬时,其不会被映射到数据库,默认的所有属性都将映射到数据库 @Access:用于设置访问属性的策略,当值为@Access(AccessType.PROPERTY)时使用setter,否则使用field。可用于类/具体属性上 @Column:用于进行属性-列名映射以及指定约束(非空、唯一、是否可更新等) @Formula:用于在query时,从数

doggy1853 1664

群晖NAS断电后IP变了?3步搞定静态IP设置(附Linux挂载指南)

本文针对群晖NAS因断电重启导致IP地址变化的问题,提供了从根源到实践的完整解决方案。核心内容包括如何为NAS配置静态IP以彻底解决连接中断,并详细讲解了在Linux系统中通过NFS协议稳定挂载NAS共享文件夹的步骤与指南,确保网络存储服务持久可靠。

weixin_29271263的博客 855

5 分钟把 qBittorrent 变成多站点搜索台:search-plugins 入门指南

你是纪录片剪辑师,要一份不好找的开源影像素材包,逐个网站翻再复制磁力链接太磨人。qBittorrent 搜索插件 search-plugins 把下载器的搜索标签页变成多站点搜索。读完本文,你就能跑通首次搜索。 ## qBittorrent 搜索插件能干什么:4 个高频场景 每个插件就是一个 .py 脚本,负责把 qBittorrent 接到一个站点上。仓库自带 8 个:eztv、pirate

gitblog_00457的博客 970

手把手教你用DLP4500和海康相机搭建双目结构光系统(附完整代码获取路径)

本文详细介绍了如何利用DLP4500投影仪和海康工业相机搭建低成本双目结构光三维测量系统。从硬件选型、软件配置到结构光编码解码实现,再到三维重建全流程,提供了完整的实战指南和优化技巧,帮助用户以不到2万元的预算实现0.05mm精度的三维扫描。

weixin_32447969的博客 317

(完整版)从零开始教你玩转ComfyUI-保姆级部署教程-手把手带你ComfyUI工作流搭建

ComfyUI就像拥有一支神奇魔杖,可以轻松创造出令人惊叹的AI生成艺术。从本质上讲,ComfyUI是构建在Stable Diffusion之上的基于节点的图形用户界面(GUI),而Stable Diffusion是一种最先进的深度学习模型,可以根据文本描述生成图像。但ComfyUI真正特别之处在于,它如何让像你这样的艺术家释放创造力,将你最疯狂的想法变为现实。想象一下有一块数字画布,你可以通过连接不同的节点来构建自己独特的图像生成工作流,每个节点代表一个特定的功能或操作。

php源码 4万+

ColumnTransformer实战:多类型数据并行预处理的工程化方案

在机器学习工程中,数据预处理常面临数值型、类别型、时间型等多源异构特征混合的挑战。其核心原理是通过列名驱动的分片-转换-拼接机制,实现各类型特征的独立拟合与统一输出,避免传统手工切片导致的列序错位、fit/transform不一致及Pipeline嵌入失败等问题。该技术显著提升预处理流程的可复现性、可部署性与可维护性,广泛应用于电商用户行为分析、金融风控建模、推荐系统等需稳定特征输入的真实场景。本文聚焦ColumnTransformer的底层调度逻辑、健壮流水线构建及生产级避坑实践。

weixin_34405354的博客 322

解决开着代理情况下pip或魔搭下载失败

最近由于经常配环境导致,老是要来回切clash关掉代理,非常的不方便如下面的,魔搭模型下载失败如下面的,pip换源后下载失败。

风吹落叶的博客 2950

NVIDIA-Nemotron-3.5-Bolt-E4B-4GB完全解析:4GB本地AI小模型的终极入门指南

**NVIDIA-Nemotron-3.5-Bolt-E4B-4GB** 是 NVIDIA 推出的 4GB 级本地 AI 小模型(Small Language Model, SLM),基于 Gemma-4-E4B 架构经过强化学习后训练,以 Q4_K_M 量化格式发布。它专为**低内存、低延迟(低 TTFT)**场景设计,适合本地语音助手、设备端 AI 助理、互动人格与嵌入式/边缘接口。本文面向新

gitblog_00821的博客 616

手把手教你新建一个winform项目(史上最全)

本文介绍如何利用visual studio新建一个winform程序

qq_34059233的博客 4万+

【STM32实物】基于STM32设计的智能仓储管理系统

近年来,随着我国仓储发展的和药品需求的不断增多,许多医院都采用药物仓储管理系统。我国的药物仓储产业已经有了长足的发展,仓库的规模不断变大,对仓储的要求也不断增高,药物的存储,识别以及对仓储环境条件的要求成为仓储的重要决策,他们可以根据不同的特点在不同场景中使用。本文详细介绍了一个基于单片机技术的智能仓储管理系统的设计与实现,这个系统可谓是集射频识别(RFID)技术和环境监测传感器于一身,旨在提高仓储操作的自动化和精确度。

嵌入式阿齐Archie 1万+

Apache Beam Per Entity Training 实战:按教育层级分组并行训练多模型流水线

Per entity training(逐实体训练)是 Apache Beam 官方文档中的一个机器学习实战示例:不按全局训练一个大模型,而是按某个实体维度(如教育层级)对数据分组,为每个分组独立训练一个模型。本文以官方文档 `per-entity-training.md` 为主线,结合仓库中的示例源码 [per_entity_training.py](https://link.gitcode.c

gitblog_00747的博客 724

【MATLAB】STM32电机调速闭环控制工程

本文提出了一种基于MATLAB仿真与STM32实现的直流电机闭环PID调速控制方案。通过MATLAB建立电机数学模型并进行参数整定,仿真验证了增量式PID算法在启停、稳态和抗扰动方面的优越性能。基于STM32F103搭建了硬件系统,实现了编码器测速、定时中断控制、PWM输出等功能。实测表明,该系统转速超调<2%、稳态误差±2r/min,具备快速响应和强抗扰能力。相比开环控制,闭环调速显著提升了动态性能和稳态精度。方案提供了完整的仿真代码和嵌入式工程源码,可直接应用于智能小车、工业传动等场景,具有较高的

unber的博客 50

Pandas多维聚合实战:从groupby到生产级指标引擎

多维聚合是数据分析的核心能力,本质是将业务维度(如地区、产品、时间)与指标计算规则进行结构化绑定。其原理远超简单分组求和,涉及索引建模、内存分配路径、时间语义对齐及稀疏性处理等底层机制。技术价值在于支撑实时风控、客户分层、经营分析等高精度决策场景,避免因fill_value误设、rolling窗口偏差或MultiIndex列名混乱导致的线上事故。本文聚焦银行级生产实践,详解pivot_table与unstack选型、NamedAgg列名标准化、pd.Grouper动态时间分组等关键方案,直击groupby性

张沈鹏,在路上 ... 410

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python为何成为数据科学首选:从清洗到部署的全栈实践

数据科学本质上是将业务问题转化为可计算、可交付、可维护的技术方案的过程。其核心不在于语言本身的理论性能,而在于能否高效支撑数据清洗、探索性分析、建模验证、可视化沟通与生产部署这一完整闭环。Python 凭借 pandas 的语义化 DataFrame、scikit-learn 的标准化 API、Matplotlib/Seaborn/Plotly 的分层可视化能力,以及 Flask/FastAPI 的轻量级模型服务化能力,构建起高度内聚的工程化生态。它降低从‘业务想法’到‘线上预测’的认知负荷与协作成本,使数

weixin_30271335的博客 358

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Modin 第三方库集成实战指南:机器学习、可视化与统计生态互操作性全景评估

本篇技术指南以 Modin 仓库官方集成文档 [docs/usage_guide/integrations.rst](https://link.gitcode.com/i/fcea6d46a90c31b274bca0367fe7e65f) 为核心,系统梳理 Modin 与 seaborn、plotly、matplotlib、sklearn、XGBoost、TensorFlow、Hugging Fa

gitblog_00984的博客 830

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

scikit-learn设计哲学与工程实践:从接口契约到Pipeline落地

scikit-learn不是函数工具箱,而是一套遵循严格接口契约(fit/transform/predict)的机器学习工程框架。其核心原理在于状态隔离、可复现性保障与Transformer-Estimator统一范式,技术价值体现在避免数据泄露、支撑交叉验证可靠性及实现端到端可部署流水线。典型应用场景包括工业级特征预处理(StandardScaler/OneHotEncoder)、混合类型数据建模(ColumnTransformer)和超参数稳健调优(GridSearchCV/BayesSearchCV)

张 作强 BLOG 578

Python为何成为AI与数据科学的工程惯性选择

Python在AI与数据科学领域并非凭空胜出,而是因其构建了以pandas、scikit-learn、PyTorch为核心的协同工作流操作系统。它将数据加载、模型迭代与结果交付三大耗时环节压缩至分钟级反馈,本质是通过交互式调试能力、友好的错误提示和动态类型灵活性,显著降低工程摩擦力。其生态优势不在于库的数量,而在于DataFrame、joblib序列化、matplotlib绘图等隐式契约带来的无缝衔接。这种‘开箱即用+渐进深化’的生产力范式,使新手首行代码即具业务价值,团队能在真实混合数据源(MySQL+E

cuizhu0832的博客 532

Scikit-learn实战避坑指南:从环境配置到防数据泄露的端到端Pipeline

Scikit-learn是Python机器学习最常用的基础库,其核心价值在于提供统一、稳定、可复现的模型接口与预处理流水线。理解其设计哲学——如fit/transform分离机制、Pipeline如何阻断数据泄露、ColumnTransformer对混合类型特征的安全封装——是构建可靠模型的前提。本文聚焦工程落地中最易踩坑的四大环节:环境依赖冲突与版本锁定、CSV加载中的隐式类型错误、标准化与编码器的训练/应用边界、以及LogisticRegression等基础模型的可解释性调试逻辑。通过葡萄酒质量预测这一

abcyan1235的博客 348

AI开发必备:5个提升效率的Python核心库

在人工智能开发领域,Python凭借其丰富的生态系统成为首选语言。科学计算库NumPy提供了高效的多维数组操作,是机器学习算法的基础支撑。数据处理库Pandas则擅长结构化数据的清洗与转换,为模型训练提供高质量输入。深度学习框架PyTorch凭借动态计算图特性,大幅提升模型开发调试效率。这些工具协同工作,构成了从数据预处理到模型部署的完整AI开发链路。特别是在构建AI原生应用时,合理选用这些经过验证的Python库,既能确保开发效率,又能优化系统性能。本文重点介绍的5个核心库,覆盖了AI应用开发全流程的关键

weixin_33922670的博客 373

scikit-learn 7大核心预处理方法实战指南

数据预处理是机器学习建模的基石,直接影响模型收敛性、稳定性与业务可解释性。其本质是解决数值量纲不一、类别语义失真、缺失值隐含业务逻辑、分布偏斜、异常值干扰等基础问题。StandardScaler、RobustScaler、PowerTransformer等方法并非孤立工具,而是针对不同数据病理(如右偏分布、合理异常、高基数类别)的精准干预手段。在工业级AI项目中,预处理需兼顾数学严谨性(如梯度下降对特征尺度的敏感性)与工程鲁棒性(如handle_unknown机制、内存可控的OneHot截断)。本文聚焦sc

a5199519的博客 390
上一篇: ChatGPT 的未来挑战和风险
下一篇: AlphaGo 和 ChatGPT有何相似之处? 附AlphaGo核心算法开源链接
robot_learner
博客等级 码龄7年 632粉丝 187原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值