Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to plot aggregated by date pandas dataframe

I have this dataframe

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"])

To aggregate payout_value by date I use:

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

How do I plot (bar chart) dates on x-axis and aggregated payout sum on y axis?

I tried using df.plot(x='date', y='payout_value',kind="bar") approach, but there is no 'date' column in df_daily dataframe, print(list(df_daily)) gives [('payout_value', 'sum')]

like image 563
user40 Avatar asked May 30 '18 00:05

user40


People also ask

What does AGG mean in pandas?

agg is an alias for aggregate . Use the alias. Functions that mutate the passed object can produce unexpected behavior or errors and are not supported. See Mutating with User Defined Function (UDF) methods for more details.


2 Answers

you are almost there, use reset_index and plot your by 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

like image 69
Mohamed Thasin ah Avatar answered Oct 18 '22 03:10

Mohamed Thasin ah


You can set_index and sum

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

enter image description here

like image 36
BENY Avatar answered Oct 18 '22 04:10

BENY