python 对具有上限和下限的数据框进行缩放和评分
python scaling and scoring a dataframe with upper and lower limit
我有一个 df['values']
列,我想在 0 和 1 之间打分。该范围由 2 个独立的上限和下限评分。
- lower/upper 限制为 20/0
- lower/upper 限制为 0/30
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
我有一个 df['values']
列,我想在 0 和 1 之间打分。该范围由 2 个独立的上限和下限评分。
- lower/upper 限制为 20/0
- lower/upper 限制为 0/30
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