如何便捷标准化Pandas DataFrame?对标SAS PROC STDIZE方法
Pandas中实现类似SAS PROC STDIZE的列标准化方法
Pandas本身没有和SAS PROC STDIZE完全一一对应的内置函数,但可以通过几种简洁的方式实现相同的标准化效果,最常用的是Z-score标准化(均值为0、标准差为1),这也是PROC STDIZE的默认行为。
方法一:用scikit-learn的StandardScaler(最贴近PROC STDIZE默认逻辑)
这是最直接的实现方式,和SAS的标准化逻辑完全匹配:
import pandas as pd from sklearn.preprocessing import StandardScaler dat = pd.DataFrame({'AA': [1, 2], 'BB': [3,4]}) scaler = StandardScaler() # 拟合转换后转回DataFrame保留原列名 dat_std = pd.DataFrame(scaler.fit_transform(dat), columns=dat.columns)
输出结果:
| AA | BB |
|---|---|
| -1.0 | -1.0 |
| 1.0 | 1.0 |
方法二:纯Pandas实现(无需额外库)
如果不想引入第三方库,直接用Pandas内置计算也能快速实现Z-score标准化:
import pandas as pd dat = pd.DataFrame({'AA': [1, 2], 'BB': [3,4]}) dat_std = (dat - dat.mean()) / dat.std()
该方法输出结果和上述StandardScaler完全一致。
其他标准化类型(对应PROC STDIZE的扩展选项)
如果需要PROC STDIZE支持的其他标准化方式,也可以用Pandas快速实现:
- 极差标准化(缩至[0,1]区间):
dat_range = (dat - dat.min()) / (dat.max() - dat.min()) - 中位数标准化(减中位数、除以四分位距):
dat_median = (dat - dat.median()) / (dat.quantile(0.75) - dat.quantile(0.25))
内容的提问来源于stack exchange,提问作者Bogaso
相关产品推荐
相关产品推荐

