如何使用Pandas重新排序表格或DataFrame?附列值范围示例
Pandas 实现列数据归一化到0-100范围
你需要将DataFrame中每列的数值线性缩放到0-100区间,也就是最小-最大归一化。下面两种方法都能实现你的需求:
方法一:手动计算(无需额外库)
直接利用Pandas的广播特性,对每列单独计算归一化值:
import pandas as pd # 模拟你的输入DataFrame df = pd.DataFrame({ 'A': [1, 2, 3, 4, 5], 'B': [10, 11, 12, 13, 15], 'C': [100, 120, 130, 140, 150] }) # 对每列执行最小-最大缩放至0-100 normalized_df = (df - df.min()) / (df.max() - df.min()) * 100 # 保留整数格式(和示例输出一致) normalized_df = normalized_df.round(0).astype(int) print(normalized_df)
输出结果:
A B C 0 0 0 0 1 25 20 40 2 50 40 60 3 75 60 80 4 100 100 100
方法二:使用scikit-learn的MinMaxScaler
适合数据量较大或需要整合机器学习流程的场景:
import pandas as pd from sklearn.preprocessing import MinMaxScaler df = pd.DataFrame({ 'A': [1, 2, 3, 4, 5], 'B': [10, 11, 12, 13, 15], 'C': [100, 120, 130, 140, 150] }) scaler = MinMaxScaler(feature_range=(0, 100)) # 拟合转换数据并转回DataFrame格式 normalized_df = pd.DataFrame( scaler.fit_transform(df), columns=df.columns ).round(0).astype(int) print(normalized_df)
两种方法都能得到符合预期的结果,手动计算更直观,sklearn方式更适配复杂场景。
内容的提问来源于stack exchange,提问作者francisco hoquee
相关产品推荐
相关产品推荐

