У меня есть фрейм данных df
с двухуровневым мультииндексом. Мне нужен график рассеяния с уровнем 0 по оси x и уровнем 1 по оси y и разбросанными точками для всех комбинаций, которые удовлетворяют условию, скажем, имеют ненулевое значение в столбце c 'col'
.
import matplotlib.pyplot as plt
from itertools import product
import numpy as np
lengths = [3, 2]
df_index = pd.MultiIndex.from_product([list(product([-1,1], repeat=li)) for li in lengths], names=['level1', 'level2'])
df_cols = ['cols']
df = pd.DataFrame([[0.] * len(df_cols)] * len(df_index), index=df_index, columns=df_cols)
df['cols'] = np.random.randint(0, 2, size = len(df))
df
дает фрейм данных следующей формы
cols
level1 level2
(-1, -1, -1) (-1, -1) 0
(-1, 1) 0
(1, -1) 0
(1, 1) 0
(-1, -1, 1) (-1, -1) 1
(-1, 1) 0
(1, -1) 1
(1, 1) 1
(-1, 1, -1) (-1, -1) 0
(-1, 1) 0
(1, -1) 0
(1, 1) 0
(-1, 1, 1) (-1, -1) 0
(-1, 1) 0
(1, -1) 1
(1, 1) 0
(1, -1, -1) (-1, -1) 0
(-1, 1) 0
(1, -1) 1
(1, 1) 1
(1, -1, 1) (-1, -1) 0
(-1, 1) 1
(1, -1) 1
(1, 1) 0
...
Теперь мне нужен график рассеяния с индексом level1 по оси x и level2 индекс по оси Y таким образом, чтобы для каждого (x, y) с cols (x, y)! = 0 была точка.