Как построить график агрегированных по дате панд данных? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть этот фрейм данных

df=pd.DataFrame([["2017-01-14",1],
    ["2017-01-14",30],
    ["2017-01-16",216],
    ["2017-02-17",23],
    ["2017-02-17",2],
    ["2017-03-19",745],
    ["2017-03-19",32],
    ["2017-03-20",11],
    ["2017-03-20",222],
    ["2017-03-21",4]],columns=["date","payout_value"])

Для агрегирования payout_value по дате я использую:

df_daily=df.groupby('date').agg(['sum'])

payout_value
sum
date    
2017-01-14  31
2017-01-16  216
2017-02-17  25
2017-03-19  777
2017-03-20  233
2017-03-21  4

Как отобразить даты (гистограмму) на оси х и агрегироватьсумма выплаты по оси у?

Я пытался использовать подход df.plot(x='date', y='payout_value',kind="bar"), но в df_daily dataframe нет столбца 'date', print(list(df_daily)) дает [('payout_value', 'sum')]

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Попробуйте:

df.groupby('date').agg(['sum']).plot.bar(legend='')
plt.xlabel('date')
plt.ylabel('payout value sum')

enter image description here

0 голосов
/ 30 мая 2018

Можно set_index и sum

df.assign(date=pd.to_datetime(df.date)).set_index('date').payout_value.sum(level=0).plot(kind='bar')

enter image description here

0 голосов
/ 30 мая 2018

вы уже почти на месте, используйте reset_index и нанесите на карту df_daily

df_daily=df.groupby('date').agg(['sum']).reset_index()
df_daily.plot(x='date', y='payout_value',kind="bar")
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...