如何使用Python的apply方法对DataFrame数值列做标准化处理?
实现DataFrame数值列的标准化处理
咱们先明确需求:已经用指定代码创建了一个5行5列的DataFrame,现在要定义一个叫Standardizing的函数来标准化Series,再把这个函数应用到DataFrame的所有数值列上。
第一步:准备基础环境与目标DataFrame
先把需要的库导入,再创建题目要求的DataFrame:
import pandas as pd import numpy as np # 创建5行5列的目标DataFrame df = pd.DataFrame(np.random.randn(25).reshape(5,5), index=list('abcde'), columns=list('vwxyz'))
第二步:定义标准化函数Standardizing
这个函数接收一个Series对象,核心逻辑是计算该Series的均值和标准差,然后对每个元素执行**(元素值 - 均值) / 标准差**的标准化变换。另外加了个小判断,避免标准差为0时出现除以0的错误:
def Standardizing(s): mean_val = s.mean() std_val = s.std() # 处理标准差为0的特殊情况 if std_val == 0: return s - mean_val return (s - mean_val) / std_val
第三步:将函数应用到所有数值列
可以用select_dtypes精准筛选int或float类型的列,再通过apply把函数批量应用到这些列上:
# 仅对数值列应用标准化函数 standardized_df = df.select_dtypes(include=['int', 'float']).apply(Standardizing)
如果你的DataFrame里全是数值列,也可以简化成:
standardized_df = df.apply(Standardizing)
处理完成后,standardized_df里的每一列都会变成均值接近0、标准差接近1的标准化数据。
内容的提问来源于stack exchange,提问作者rAmAnA
相关产品推荐
相关产品推荐

