gpt4 book ai didi

pandas - 规范化多索引数据框中的值?

转载 作者:行者123 更新时间:2023-12-03 20:37:42 25 4
gpt4 key购买 nike

如何规范化多索引数据帧?

假设我有数据框:

d = pd.DataFrame([["a",1,3],["a",2,2],["b",4,4],["b",5,8]], 
columns=["name","value1","value2"])

如何计算每个“名称”的标准化值?

我知道如何规范化基本数据帧:
d = (d-d.mean(axis=0))/data.std(axis=0, ddof=1)

但我无法将其应用于数据框的每个“名称”组

所以我想要的结果是:
name, value1, value2
a -0.5 0.5
a 0.5 -0.5
b -0.5 -1
b 0.5 1

我尝试了 groupby 和多索引数据框,但可能我没有以正确的方式做

最佳答案

按组归一化是 one of the examples in the groupby documentation .但它并没有完全按照您的意愿进行操作。

In [2]: d.groupby('name').transform(lambda x: (x-x.mean())/x.std(ddof=1))
Out[2]:
value1 value2
0 -0.707107 0.707107
1 0.707107 -0.707107
2 -0.707107 -0.707107
3 0.707107 0.707107

您想要的结果表明您实际上希望引用 value1 中的元素对每个名称组中的值进行规范化。和 value2 .对于类似的事情,您可以将一个函数单独应用于每个组,然后重新组合结果。
In [3]: def normalize(group):                                                      
mean = group.values.ravel().mean()
std = group.values.ravel().std(ddof=1)
return group.applymap(lambda x: (x - mean)/std)
....:

In [4]: pd.concat([normalize(group) for _, group in d.set_index('name').groupby(level=0)])
Out[4]:
value1 value2
name
a -1.224745 1.224745
a 0.000000 0.000000
b -0.660338 -0.660338
b -0.132068 1.452744

关于pandas - 规范化多索引数据框中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com