Nano Hash - криптовалюты, майнинг, программирование

Блочная диаграмма Matplotlib с одним полем для каждой категории или значения в столбце

У меня есть такой 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

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

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


  • @QuangHoang Это не работает 05.11.2019

Ответы:


1

Рассмотрим matplotlib subplots и поэлементно с каждым столбцом, итеративно передать оси в ax boxplot Seaborn для каждого числового столбца y.

fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12,4))

for i, col in enumerate(["col_1", "col_2", "col_3"]):
   sns.boxplot(data=df, x='month', y=col, ax=ax[i])
   ax[i].set_title(col.title())

plt.tight_layout()

plt.show()
plt.clf()
plt.close()

Чтобы продемонстрировать случайные данные

np.random.seed(1142019)

df = pd.DataFrame({'Day': pd.date_range('2018-01-01', '2018-12-31'),
                   'col_1': np.random.randint(1, 10, 365),
                   'col_2': np.random.randint(10, 100, 365),
                   'col_3': np.random.randint(2500, 29999, 365)
                  })

df['month'] = df['Day'].dt.month

Выше код генерирует этот график

Вывод подграфика коробки

05.11.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..