Как построить график Seaborn с итоговыми суммами по месяцам?

Помогите пожалуйста решить задачу, у меня есть такой Датафрейм:

ДАТА ИМЯ ИТОГ
2021-05-28 Света 3250
2021-06-01 Катя 2560
2021-06-05 Наташа 2589
2021-07-15 Ольга 15668
2021-07-24 Андрей 5580
2022-01-08 Влад 6580
2022-01-15 Артем 9500

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

Я пытался использовать .groupby(), делал индексацию по колонке "ДАТА", но в итоге не получается получить информативный график, либо сталкиваюсь с ошибками. К слову графики я пытался стоить .displot() или .countplot(), может быть они не подходят для этих задач?

Подскажите какие методы можно использовать. Спасибо!


Ответы (1 шт):

Автор решения: CrazyElf

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

import pandas as pd
from io import StringIO
import seaborn as sns

data = StringIO('''
ДАТА    ИМЯ ИТОГ
2021-05-28  Света   3250
2021-06-01  Катя    2560
2021-06-05  Наташа  2589
2021-07-15  Ольга   15668
2021-07-24  Андрей  5580
2022-01-08  Влад    6580
2022-01-15  Артем   9500
''')

df = pd.read_csv(data, sep='\s+')
df['ГОД-МЕСЯЦ'] = df['ДАТА'].str.slice(0, 7)
sns.barplot(x='ГОД-МЕСЯЦ', y='ИТОГ', hue='ИМЯ', data=df);

введите сюда описание изображения

Если людей отдельно показывать не нужно, то нарисовать такое ещё проще, хотя простой matplotlib не так красив, как seaborn:

df.groupby('ГОД-МЕСЯЦ')['ИТОГ'].sum().plot(kind='bar')

введите сюда описание изображения

→ Ссылка