У меня есть один CSV, как этот (разделитель ;)

Day;col_1;col_2;col_3;month
20180101;652;0;25803;1
20180102;737;6;25677;1
20180103;653;10;27955;1
20180104;914;10;27722;1
[a lot of rows]
20181228;924;35;30191;12
20181229;721;18;28601;12
20181230;902;17;28098;12
20181231;778;30;28909;12

Я хотел бы отобразить на отдельной оси значения столбцов col_1, col_2 и col_3. На каждой оси я хотел бы иметь одну отдельную рамку для каждого месяца

Я знаю, что это способ сделать это в seaborn только для одного столбца, но я хотел бы сделать это, используя только pandas и matplotlib:

import seaborn as sns
sns.boxplot(data=df, x='month', y='col1')

result_with_seaborn

Проверив его в этом сообщении, я обнаружил, что это может быть весьма приближенно к тому, что я хочу:

df.assign(index=df.groupby('month').cumcount()).pivot('index','month','col1').plot(kind='box')

matplotlib try

Есть ли более эффективный подход?

Как добавить в один и тот же график несколько осей (то есть подзаговоров) для каждого colX?

0
aturegano 5 Ноя 2019 в 22:17
df.assign(...).pivot(...).plot.box(subplots=True)?
 – 
Quang Hoang
5 Ноя 2019 в 22:20
Это не работает
 – 
aturegano
5 Ноя 2019 в 22:32

1 ответ