Как построить график 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 шт):
Судя по представленным датам за каждый месяц у одного человека только одна запись, в этом случае группировка вообще не нужна:
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')

