вывести нижнюю половину корреляционной матрицы, но сохранить имена индексов - PullRequest
0 голосов
/ 11 января 2020

Когда я печатаю небольшую матрицу корреляции, я получаю это:

          Number       Age    Height    Weight
Number  1.000000 -0.372662 -0.062441 -0.123073
Age    -0.372662  1.000000  0.156273  0.276137
Height -0.062441  0.156273  1.000000  0.697119
Weight -0.123073  0.276137  0.697119  1.000000 

Мне нужна только нижняя половина.

Я могу извлечь нижнюю половину следующим образом:

print(np.tril(data.corr(), k=0))

Что приводит к этому:

[[ 1.          0.          0.          0.        ]
 [-0.3726625   1.          0.          0.        ]
 [-0.06244135  0.15627349  1.          0.        ]
 [-0.12307338  0.27613676  0.69711907  1.        ]]

Но мне нужен формат исходной корреляционной матрицы (с неизменными именами индексов: число, возраст, рост, вес) .

По сути, я хочу это:

          Number       Age    Height    Weight
Number  1.000000 
Age    -0.372662  1.000000  
Height -0.062441  0.156273  1.000000  
Weight -0.123073  0.276137  0.697119  1.000000 

Все, что я могу найти в Интернете, это как извлечь, а не как напечатать «оригинальную» матрицу с замаскированными нежелательными значениями.

1 Ответ

0 голосов
/ 12 января 2020

Это все называется pandas DataFrame, так что просто посмотрите, как поиграть с ним для получения дополнительной информации. А пока вот быстрый скрипт, который я выкинул, чтобы показать, как быстро получить подмножества DataFrames:

import numpy as np
import pandas as pd

# Generating matrix from raws
A = [[ 1.,         0.,          0.,          0.,        ],
    [-0.3726625,   1.,          0.,          0.,        ],
    [-0.06244135,  0.15627349,  1.,          0.,        ],
    [-0.12307338,  0.27613676,  0.69711907,  1.,        ]]

names = ["Number", "Age", "Height", "Weight"]
df = pd.DataFrame(A, index=names, columns=names)
print(df)

#           Number       Age    Height  Weight
# Number  1.000000  0.000000  0.000000     0.0
# Age    -0.372663  1.000000  0.000000     0.0
# Height -0.062441  0.156273  1.000000     0.0
# Weight -0.123073  0.276137  0.697119     1.0

# Get rows index 2 and greater
df2 = df[2:]
print(df2)

#           Number       Age    Height  Weight
# Height -0.062441  0.156273  1.000000     0.0
# Weight -0.123073  0.276137  0.697119     1.0

# Get columns with index (1:3]
df3 = df[:][df.columns[1:3]] # [:] needed to dereference df3 from df
print(df3)

#              Age    Height
# Number  0.000000  0.000000
# Age     1.000000  0.000000
# Height  0.156273  1.000000
# Weight  0.276137  0.697119

# Get only last (bottom right) quarter of data
df4 = df[2:][df.columns[2:]]
print(df4)

#           Height  Weight
# Height  1.000000     0.0
# Weight  0.697119     1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...