如何在Python中对DataFrame数据按列执行标准化处理?
DataFrame逐列标准化(减列均值/除列标准差)实现方法
根本不需要手动写for循环,pandas的广播机制原生支持按列对齐运算,一行代码就能完成:
# 假设你存储数值的DataFrame变量名为df standardized_df = (df - df.mean()) / df.std()
相关逻辑说明:
df.mean()默认沿0轴(逐列)计算每列的算术均值,返回索引和原DataFrame列名一致的Seriesdf.std()默认沿0轴计算每列的样本标准差(自由度为1),返回同结构的Series- DataFrame和Series做算术运算时,pandas会自动按列名匹配对齐,逐列完成减法、除法运算,效率比手写for循环高很多。
如果你确实需要用for循环实现(比如需要在逐列处理时加其他自定义逻辑),可以参考下面的写法:
# 先拷贝原数据避免修改原始DataFrame standardized_df = df.copy() for col_name in df.columns: col_mean = df[col_name].mean() col_std = df[col_name].std() standardized_df[col_name] = (df[col_name] - col_mean) / col_std
注意:如果你的场景需要计算总体标准差(除以样本量n而非n-1),给
std()方法传入参数ddof=0即可,即写为df.std(ddof=0)。
内容的提问来源于stack exchange,提问作者Michael Howell
相关产品推荐
相关产品推荐

