简体   繁体   English

Pandas 相关矩阵迭代

[英]Pandas correlation matrix iterate

I have this correlation matrix in pandas df:我在 pandas df 中有这个相关矩阵:

          YAR.OL    NHY.OL      TSLA      MSFT    STB.OL    DNB.OL    SBO.OL
YAR.OL  1.000000  0.505583  0.164433  0.233010  0.387104  0.421862  0.116018
NHY.OL  0.505583  1.000000  0.183107  0.205349  0.445840  0.465982  0.135244
TSLA    0.164433  0.183107  1.000000  0.311312  0.169024  0.206375  0.031973
MSFT    0.233010  0.205349  0.311312  1.000000  0.185617  0.202847  0.105705
STB.OL  0.387104  0.445840  0.169024  0.185617  1.000000  0.499098  0.125401
DNB.OL  0.421862  0.465982  0.206375  0.202847  0.499098  1.000000  0.152566
SBO.OL  0.116018  0.135244  0.031973  0.105705  0.125401  0.152566  1.000000

I want to transform it to a list of dictionaries:我想将其转换为字典列表:

       "data": [
            {
              "rowid": "YAR.OL",
              "columnid": "YAR.OL",
              "value": "1.000000"
            },
            {
              "rowid": "YAR.OL",
              "columnid": "NHY.OL",
              "value": "0.505583"
            },.....]

I have tried to do something like this for now:我现在尝试做这样的事情:

index_list = corr_matrix.index.to_list()
data = []
for index_list in corr_matrix:
    corr_matrix_index = corr_matrix[index_list]
    print(corr_matrix_index)

How can I tackle this issue?我该如何解决这个问题?

Use DataFrame.melt with to_dict with "records" orient:DataFrame.melt与带有“记录”方向的to_dict一起使用:

data = (df.rename_axis('rowid')
         .reset_index()
         .melt(id_vars='rowid', var_name='columnid')
         .to_dict('records'))

[out] [出去]

[{'rowid': 'YAR.OL', 'columnid': 'YAR.OL', 'value': 1.0},
 {'rowid': 'NHY.OL', 'columnid': 'YAR.OL', 'value': 0.505583},
 {'rowid': 'TSLA', 'columnid': 'YAR.OL', 'value': 0.164433},
 {'rowid': 'MSFT', 'columnid': 'YAR.OL', 'value': 0.23301},
 {'rowid': 'STB.OL', 'columnid': 'YAR.OL', 'value': 0.387104},
 {'rowid': 'DNB.OL', 'columnid': 'YAR.OL', 'value': 0.421862},
 {'rowid': 'SBO.OL', 'columnid': 'YAR.OL', 'value': 0.11601800000000001},
 {'rowid': 'YAR.OL', 'columnid': 'NHY.OL', 'value': 0.505583},
 {'rowid': 'NHY.OL', 'columnid': 'NHY.OL', 'value': 1.0},
 {'rowid': 'TSLA', 'columnid': 'NHY.OL', 'value': 0.183107},
 {'rowid': 'MSFT', 'columnid': 'NHY.OL', 'value': 0.20534899999999998},
 {'rowid': 'STB.OL', 'columnid': 'NHY.OL', 'value': 0.44583999999999996},
 {'rowid': 'DNB.OL', 'columnid': 'NHY.OL', 'value': 0.46598199999999995},
 {'rowid': 'SBO.OL', 'columnid': 'NHY.OL', 'value': 0.135244},
 {'rowid': 'YAR.OL', 'columnid': 'TSLA', 'value': 0.164433},
 {'rowid': 'NHY.OL', 'columnid': 'TSLA', 'value': 0.183107},
 {'rowid': 'TSLA', 'columnid': 'TSLA', 'value': 1.0},
 {'rowid': 'MSFT', 'columnid': 'TSLA', 'value': 0.311312},
 {'rowid': 'STB.OL', 'columnid': 'TSLA', 'value': 0.169024},
 {'rowid': 'DNB.OL', 'columnid': 'TSLA', 'value': 0.206375},
 {'rowid': 'SBO.OL', 'columnid': 'TSLA', 'value': 0.031973},
 {'rowid': 'YAR.OL', 'columnid': 'MSFT', 'value': 0.23301},
 {'rowid': 'NHY.OL', 'columnid': 'MSFT', 'value': 0.20534899999999998},
 {'rowid': 'TSLA', 'columnid': 'MSFT', 'value': 0.311312},
 {'rowid': 'MSFT', 'columnid': 'MSFT', 'value': 1.0},
 {'rowid': 'STB.OL', 'columnid': 'MSFT', 'value': 0.185617},
 {'rowid': 'DNB.OL', 'columnid': 'MSFT', 'value': 0.202847},
 {'rowid': 'SBO.OL', 'columnid': 'MSFT', 'value': 0.105705},
 {'rowid': 'YAR.OL', 'columnid': 'STB.OL', 'value': 0.387104},
 {'rowid': 'NHY.OL', 'columnid': 'STB.OL', 'value': 0.44583999999999996},
 {'rowid': 'TSLA', 'columnid': 'STB.OL', 'value': 0.169024},
 {'rowid': 'MSFT', 'columnid': 'STB.OL', 'value': 0.185617},
 {'rowid': 'STB.OL', 'columnid': 'STB.OL', 'value': 1.0},
 {'rowid': 'DNB.OL', 'columnid': 'STB.OL', 'value': 0.49909799999999993},
 {'rowid': 'SBO.OL', 'columnid': 'STB.OL', 'value': 0.125401},
 {'rowid': 'YAR.OL', 'columnid': 'DNB.OL', 'value': 0.421862},
 {'rowid': 'NHY.OL', 'columnid': 'DNB.OL', 'value': 0.46598199999999995},
 {'rowid': 'TSLA', 'columnid': 'DNB.OL', 'value': 0.206375},
 {'rowid': 'MSFT', 'columnid': 'DNB.OL', 'value': 0.202847},
 {'rowid': 'STB.OL', 'columnid': 'DNB.OL', 'value': 0.49909799999999993},
 {'rowid': 'DNB.OL', 'columnid': 'DNB.OL', 'value': 1.0},
 {'rowid': 'SBO.OL', 'columnid': 'DNB.OL', 'value': 0.152566},
 {'rowid': 'YAR.OL', 'columnid': 'SBO.OL', 'value': 0.11601800000000001},
 {'rowid': 'NHY.OL', 'columnid': 'SBO.OL', 'value': 0.135244},
 {'rowid': 'TSLA', 'columnid': 'SBO.OL', 'value': 0.031973},
 {'rowid': 'MSFT', 'columnid': 'SBO.OL', 'value': 0.105705},
 {'rowid': 'STB.OL', 'columnid': 'SBO.OL', 'value': 0.125401},
 {'rowid': 'DNB.OL', 'columnid': 'SBO.OL', 'value': 0.152566},
 {'rowid': 'SBO.OL', 'columnid': 'SBO.OL', 'value': 1.0}]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM