2

I have the following dataframe:

                        total_gross_profit
  first_day_week    var 
      Feb-06         1  45293.09
                     2  61949.54
      Feb-13         1  44634.72
                     2  34584.15
      Feb-20         1  43796.89
                     2  37308.57
      Feb-27         1  44136.21
                     2  38237.67
      Jan-16         1  74695.91
                     2  75702.02
      Jan-23         1  86101.05
                     2  69518.39
      Jan-30         1  65913.56
                     2  74823.94
      Mar-06         1  34256.47
                     2  31953.00

grouped by first_day_week and var columns i need to make a bar plot where i have first_day_week in x axis and for each entry in first_day_week two bar plot for each value in var in different colors, something similar to (data for following barplot is totaly fake) :

enter image description here

1 Answer 1

7

You need reshape by unstack and then plot by DataFrame.plot.bar:

print (df.unstack()['total_gross_profit'])
var                    1         2
first_day_week                    
Feb-06          45293.09  61949.54
Feb-13          44634.72  34584.15
Feb-20          43796.89  37308.57
Feb-27          44136.21  38237.67
Jan-16          74695.91  75702.02
Jan-23          86101.05  69518.39
Jan-30          65913.56  74823.94
Mar-06          34256.47  31953.00


df.unstack()['total_gross_profit'].plot.bar(rot=0)

graph

For sorting index need convert to datetime, sort and then reindex:

df1 = df.unstack()['total_gross_profit']
idx = pd.to_datetime(df1.index, format='%b-%d').sort_values().strftime('%b-%d')
print (idx)
['Jan-16' 'Jan-23' 'Jan-30' 'Feb-06' 'Feb-13' 'Feb-20' 'Feb-27' 'Mar-06']

df1.reindex(idx).plot.bar(rot=90)

graph1

Sign up to request clarification or add additional context in comments.

3 Comments

Perfect, is there any way to sort them based on time in 'first_day_week ' before plotting?
sort_index() would help?
sorry, give me a sec

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.