[英]Remove specific values from dataframe
我有以下相關矩陣:
symbol abc xyz ghj
symbol
abc 1 0.1 -0.2
xyz 0.1 1 0.3
ghj -0.2 0.3 1
我需要能夠找到整個數據幀的標准偏差,但這必須排除完美的相關值,即:標准偏差一定不能考慮abc:abc,xyz:xyz,ghj:ghj
我可以使用以下方法獲取整個數據框的標准偏差:
df.stack().std()
但這考慮到了每個不正確的值。 標准差不應該包括項目與其自身相關的行/列組合(即:1)。 有沒有辦法刪除abc:abc,xyz:xyz,ghj:ghj。 然后計算標准偏差。
也許將其轉換為字典或其他內容?
如果使用numpy ,則可以使用np.extract和np.std :
In [61]: import numpy as np
In [62]: a = np.array([[ 1. , 0.1, -0.2],
[ 0.1, 1. , 0.3],
[-0.2, 0.3, 1. ]])
In [63]: a
Out[63]:
array([[ 1. , 0.1, -0.2],
[ 0.1, 1. , 0.3],
[-0.2, 0.3, 1. ]])
In [64]: calc_std = np.std(np.extract(a != 1, a))
In [65]: calc_std
Out[65]: 0.20548046676563256
np.extract(a != 1, a))
返回包含的各要素的數組a
是不等於 1。
返回的數組如下所示:
In [66]: np.extract(a != 1, a)
Out[66]: array([ 0.1, -0.2, 0.1, 0.3, -0.2, 0.3])
提取之后,您可以使用np.std()
輕松計算標准偏差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.