Datos multietiquetados de Pandas a mapa de calor

Tengo la siguiente estructura de datos:

ingrese la descripción de la imagen aquí

Cada fila representa una anotación. Si el usuario etiquetó los datos con las etiquetas 2 y 3 (consulte la segunda fila, también conocida como índice de fila 1), el conjunto de datos sería 1 1 0 0 0 0 0.

Me gustaría hacer un mapa de calor a partir de esto, para ver qué etiquetas están anotadas de cerca. Creo que el df resultante debería ser 7x7. (Lo intenté con np.corrcoef, intenté girar los datos, puede ser que no esté haciendo la pregunta correctamente).

Cualquier ayuda es apreciada, gracias!

Las primeras 5 filas de datos:

df = [{'L3': 1},
 {'L2': 1, 'L3': 1},
 {'L7': 1},
 {'L1': 1, 'L4': 1},
 {'L1': 1, 'L2': 1}]
df = pd.DataFrame(df)
Answer

Use corrdespués de reemplazar nanpor 0, de lo contrario obtendrá una matriz llena con nan:

corr = df.fillna(0).corr()
print(corr)
plt.colormesh(corr)
plt.show()

# Output
          L1        L2        L3        L4        L5        L6        L7
L1  1.000000  0.010929 -0.011707 -0.000469 -0.024428 -0.004918  0.033066
L2  0.010929  1.000000 -0.028859 -0.012876 -0.000667  0.009042 -0.017563
L3 -0.011707 -0.028859  1.000000 -0.033609  0.017446  0.036202  0.018763
L4 -0.000469 -0.012876 -0.033609  1.000000 -0.035363 -0.009639  0.038593
L5 -0.024428 -0.000667  0.017446 -0.035363  1.000000  0.007565 -0.045324
L6 -0.004918  0.009042  0.036202 -0.009639  0.007565  1.000000 -0.009466
L7  0.033066 -0.017563  0.018763  0.038593 -0.045324 -0.009466  1.000000

ingrese la descripción de la imagen aquí

Para una vista rápida, puede usar matplotlib pero si quiere producir un resultado hermoso, le recomiendo que instale y use seaborn

Configurar un MRE

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

N = 2000

np.random.seed(2022)
df = pd.DataFrame(np.random.choice([np.NaN, 1], (N, 7), p=[.7, .3]),
                  columns=[f'L{i}' for i in range(1, 8)])