python 对具有上限和下限的数据框进行缩放和评分

python scaling and scoring a dataframe with upper and lower limit

我有一个 df['values'] 列,我想在 0 和 1 之间打分。该范围由 2 个独立的上限和下限评分。

python 上有这个操作的函数吗? minmaxscalar 不允许我设置上限和下限。

Input is df['values']
Desired output is df['score']

values   score(20/0)  score(0/30)
-5.1     1.00         0.00
3.6      0.82         0.12
6.6      0.67         0.22
9.0      0.55         0.30
21.0     0.00         0.70

您可以先缩放到 low/up,然后剪辑:

df = pd.DataFrame({'values': [-5.1, 3.6, 6.6, 9, 21]})
MIN = 20
MAX = 0
df['values'].sub(MIN).div(MAX-MIN).clip(0, 1)

输出:

0    1.00
1    0.82
2    0.67
3    0.55
4    0.00
Name: values, dtype: float64

作为函数

def score(df, MIN, MAX):
    return (df['values']
              .sub(MIN)
              .div(MAX-MIN)
              .clip(0, 1)
              .rename(f'score({MIN},{MAX})')
            )

pd.concat([df,
           score(df, 20, 0),
           score(df, 0, 30)],
          axis=1)

输出:

   values  score(20,0)  score(0,30)
0    -5.1         1.00         0.00
1     3.6         0.82         0.12
2     6.6         0.67         0.22
3     9.0         0.55         0.30
4    21.0         0.00         0.70