У меня есть некоторые данные, из которых я хочу извлечь временной ряд доходов (сумма Dollars
в разные даты Day
в разных местах Where
) для разных продуктов (x
и y
). [+1121]
import pandas as pd
#Create data
data = {'Day': [1,1,2,2,3,3],
'Where': ['A','B','A','B','B','B'],
'What': ['x','y','x','x','x','y'],
'Dollars': [100,200,100,100,100,200]}
index = range(len(data['Day']))
columns = ['Day','Where','What','Dollars']
df = pd.DataFrame(data, index=index, columns=columns)
df
Для этого я группирую данные по Day
и What
и суммирую по Dollars
:
[ 111]
Теперь я хотел бы сделать временной ряд для x
и y
следующим образом:
Я пробовал следующее, но это явно не работает:
items = df.What.unique()
ax = plt.figure()
for item in items:
df_tmp = df[['Day']][df.What == item]
plt.plot(df_tmp['Day'],df_tmp,'.-',label=item)
Может кто-нибудь, пожалуйста, направить меня в правильном направлении? Есть ли более быстрый способ получить правильный результат?
IIUC, unstack
и участок:
(df.groupby(['Day', 'What'])['Dollars']
.sum()
.unstack('What', fill_value=0)
.plot())
plt.show()