У меня есть набор данных, подобный этому:

d = {'label': ['true', 'false', 'true', 'false', 'false'],
     'count': [4, 24, 31, 2, 3],
     'date': [2019-01-01, 2019-01-02, 2019-01-03, 2019-01-04, 2019-01-05]}
df = pd.DataFrame(d)

Я пытаюсь создать кумулятивную сумму, используя count для каждого label, и построить их рядом. Однако мне удалось сделать это только следующим образом:

pivot = pd.pivot_table(df, values="count", index=["date"], columns=["label"], aggfunc=np.sum)
pivot = pivot.cumsum()

plt.rcParams["figure.figsize"] = [20,7]
plt.plot(pivot)
plt.ylabel('Cumulative number')
plt.xlabel('Time')

Он отлично работает, за исключением того, что обе категории находятся на одном участке. Я хотел бы создать их рядом с y-label как что-то вроде 10 ^ 0, 10 ^ 1, 10 ^ 2 и так далее, примерно так:

enter image description here

Любое руководство, пожалуйста?

1
AneesBaqir 23 Ноя 2021 в 12:58

1 ответ

Лучший ответ

Вы можете использовать seaborn:

import seaborn as sns

sns.relplot(data=pivot.melt(ignore_index=False), x='date', y='value', col='label', kind='scatter')

enter image description here

1
Mykola Zotko 23 Ноя 2021 в 13:22
Отлично, спасибо. Не могли бы вы рассказать мне, как я могу получить 10 ^ 0, 10 ^ 1 .... по оси Y?
 – 
AneesBaqir
23 Ноя 2021 в 13:20
Хорошо, спасибо :)
 – 
AneesBaqir
23 Ноя 2021 в 13:25