利用Pandas开发自己的相关python,类似于pearson

2024-09-29 20:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

 count          716865                 716873                  716884                 716943  
  0   -0.16029615828413712    -0.07630309240006158    0.11220663712532133    -0.2726775504078691  
  1    -0.6687265363491811     -0.6135022705188075   -0.49097425130988914     -0.736020384028633  
  2    0.06735205699309535     0.07948417451634422    0.09240256047258057     0.0617964313591086  
  3      0.372935701728449     0.44324822316416074     0.5625073287879649     0.3199599294007491  
  4    0.39439310866886124     0.45960496068147993     0.5591549439131621    0.34928093849248304  
  5   -0.08007381002566456   -0.021313801077641505    0.11996141286735541   -0.15572679401876433  
  6    0.20853071107951396     0.26561990841073535     0.3661990387594055    0.15720649076873264  
  7    -0.0488049712326824     0.02909288268076153    0.18643283476719688    -0.1438092892727158  
  8   0.017648470149950992     0.10136455179350337     0.2722686729095633   -0.07928001803992157  
  9     0.4693208827819954      0.6601182040950377                    1.0     0.2858790498612906  
 10    0.07597883305423633      0.0720868097090368    0.06089458880790768    0.08522329510499728  

我想操纵这个规范化的数据帧来做一些类似于python内置的.corr方法的事情,但我想修改它。我想创建我自己的关联方法,并建立一个我知道如何做的热图。 我的最终结果是一个数据帧,它将是NxN,具有满足以下标准的0或1个值。在我上面显示的表格中,它将是4x4

以下步骤是我的关联方法的标准:

  1. 循环遍历每列作为引用,并从中减去所有其他列
  2. 当我们循环时,如果引用和相关列的标准化值都小于0.2,我还想忽略绝对值
  3. 对于剩下的,如果差值小于10%,则表示相关性良好,我开始用1表示正相关性,如果任何计数值的差值大于10%,则用0表示

所有对角线都将有一个1,以便彼此具有良好的相关性,而其他单元格将有0或1

下面是我所拥有的,但是当我删除死区值时,由于某些原因,它并不能覆盖所有内容。 subdf=[] 死区=0.2

for i in range(len(df2_norm.columns)):
     # First, let's drop non-zero above deadband values in each row
     df2_norm_drop = df2_norm.drop(df2_norm[(df2_norm.abs().iloc[:,i] < deadband) & \
                 (df2_norm.abs().iloc[:,i] > 0)].index)
     # Take difference of first detail element normalized value to chart allowable
     # normalized value
     subdf.append(pd.DataFrame(df2_norm.subtract(df2_norm.iloc[:,i], axis =0)))

我知道这看起来很难,但我真的很感激任何帮助。谢谢大家!


Tags: 数据方法innorm标准valuecountabs

热门问题