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')]
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.
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()
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')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With