比较每个值的 Zscore 并在超过某个分数时将它们标记为 NaN
Comparing Zscore per values and mark them as NaN if it goes above a certain score
我正在尝试满足计算 Zscore 并希望与行中的各个值进行比较的要求。如果 Zscore>1,则将它们标记为 NaN
以获取这些特定值。我将其标记为 NaN
,以便我可以通过适当的技术填充这些值。
我有以下代码:
s={'2014':[1,1,2,2],'2015':[12,22,33,44],'2016':[55,66,77,88],'2017':[2,3,4,5]}
p=pd.DataFrame(data=s)
2014 2015 2016 2017
0 1 12 55 2
1 1 22 66 3
2 2 33 77 4
3 2 44 88 5
我将 zscore 计算为 -
df_zscore = (p - p.mean())/p.std()
2014 2015 2016 2017
0 -0.866025 -1.139879 -1.161895 -1.161895
1 -0.866025 -0.416146 -0.387298 -0.387298
2 0.866025 0.379960 0.387298 0.387298
3 0.866025 1.176065 1.161895 1.161895
如果 Zscore>1,那么期望的输出应该是这样的:
2014 2015 2016 2017
0 1 12 55 2
1 1 22 66 3
2 2 33 77 4
3 2 NaN NaN NaN
(它们被标记为 NaN,因为 Zscore >1)
我怎样才能到达这里?
你可以mask
它:
df_zscore = (p - p.mean()) / p.std()
out = p.mask(df_zscore > 1)
输出:
2014 2015 2016 2017
0 1 12.0 55.0 2.0
1 1 22.0 66.0 3.0
2 2 33.0 77.0 4.0
3 2 NaN NaN NaN
我正在尝试满足计算 Zscore 并希望与行中的各个值进行比较的要求。如果 Zscore>1,则将它们标记为 NaN
以获取这些特定值。我将其标记为 NaN
,以便我可以通过适当的技术填充这些值。
我有以下代码:
s={'2014':[1,1,2,2],'2015':[12,22,33,44],'2016':[55,66,77,88],'2017':[2,3,4,5]}
p=pd.DataFrame(data=s)
2014 2015 2016 2017
0 1 12 55 2
1 1 22 66 3
2 2 33 77 4
3 2 44 88 5
我将 zscore 计算为 -
df_zscore = (p - p.mean())/p.std()
2014 2015 2016 2017
0 -0.866025 -1.139879 -1.161895 -1.161895
1 -0.866025 -0.416146 -0.387298 -0.387298
2 0.866025 0.379960 0.387298 0.387298
3 0.866025 1.176065 1.161895 1.161895
如果 Zscore>1,那么期望的输出应该是这样的:
2014 2015 2016 2017
0 1 12 55 2
1 1 22 66 3
2 2 33 77 4
3 2 NaN NaN NaN
(它们被标记为 NaN,因为 Zscore >1)
我怎样才能到达这里?
你可以mask
它:
df_zscore = (p - p.mean()) / p.std()
out = p.mask(df_zscore > 1)
输出:
2014 2015 2016 2017
0 1 12.0 55.0 2.0
1 1 22.0 66.0 3.0
2 2 33.0 77.0 4.0
3 2 NaN NaN NaN