提问人:esme 提问时间:11/15/2023 更新时间:11/15/2023 访问量:38
通过减去列的平均值并除以标准差来规范化列(a、b、c),并将结果分配给三个新列
Normalize columns(a, b, c) by subtracting its mean value and dividing by its standard deviation, and assign the results to three new columns
问:
我正在尝试通过减去其平均值并除以其标准偏差来规范化列(a、b、c),并将结果分配给三个新列。然后,我需要将结果分配给三个新列,分别称为 a_norm、b_norm 和 c_norm。
我正在考虑使用 df.assign() 创建新列,但我还没有找到将所有内容放在一起的方法。
答:
0赞
Panda Kim
11/15/2023
#1
例
你必须举例才能自己得到答案。
点击以下链接:https://stackoverflow.com/help/minimal-reproducible-example
这一次,我举了一个简单的例子。
import pandas as pd
data = {'a': [8, 7, 2, 1], 'b': [1, 3, 5, 1], 'c': [2, 6, 1, 0]}
df = pd.DataFrame(data)
DF系列
a b c
0 8 1 2
1 7 3 6
2 2 5 1
3 1 1 0
法典
第1步。正常化
我在每一列中执行了归一化。
(如果您需要找到合并的 a、b 和 c 列的平均值和标准差,请创建示例并再次询问。
tmp = df.sub(df.mean()).div(df.std()).add_suffix('_norm')
TMP:
a_norm b_norm c_norm
0 0.996616 -0.783349 -0.095059
1 0.711868 0.261116 1.425880
2 -0.711868 1.305582 -0.475293
3 -0.996616 -0.783349 -0.855528
第2步。Concat DF 和 TMP
out = pd.concat([df, tmp], axis=1)
外:
a b c a_norm b_norm c_norm
0 8 1 2 0.996616 -0.783349 -0.095059
1 7 3 6 0.711868 0.261116 1.425880
2 2 5 1 -0.711868 1.305582 -0.475293
3 1 1 0 -0.996616 -0.783349 -0.855528
下一个:将浮点数列表归一化为概率
评论