Вы можете сделать что-то вроде этого:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
d = {
'a': pd.Series(np.random.choice([1, -1], size=10)),
'b': pd.Series(np.random.randn(10)),
'c': pd.Series(np.random.randn(10))
}
df = pd.DataFrame(d)
# plot for first column when value is 1
df[df.a == 1].sample(3).T.iloc[1:].boxplot()
# plot for first column when value is -11
df[df.a == -1].sample(3).T.iloc[1:].boxplot()
Объяснение:
Получить строки, в которых первое значение равно 1
df[df.a == 1]
Получить случайное 3строка из отфильтрованных единиц
df[df.a == -1].sample(3)
Выкиньте первый столбец (то есть с единицами) и транспонируйте DataFrame (таким образом, ваши прямоугольники будут построены для каждой строки вместо столбцов)
df[df.a == -1].sample(3).T.iloc[1:]
Наконец, построите сюжет на поле
df[df.a == -1].sample(3).T.iloc[1:].boxplot()
Результат:
