user890234
user890234

Reputation: 995

pandas groupby to charts via matplotlib and seaborn

How i can convert below data in individual charts(trendline) wrt to name

name                     month   
x                        April       80.0
                         February    88.0
                         January     82.0
                         March       48.0
y                        April       77.0
                         February    76.0
                         January     80.0
                         March       82.0
z                        April       86.0
                         February    81.0
                         January      NaN
                         March       85.0

Upvotes: 1

Views: 58

Answers (1)

jezrael
jezrael

Reputation: 862491

Use Series.unstack for reshape, then convert columns to CategoricalIndex and sorting for correct order and last ploting by DataFrame.plot:

months = ['January','February','March','April',
          'May','June','July','August',
          'September','October','November','December']

#your groupby code
#s = df.groupby(...)
df = s.unstack()
df.columns = pd.CategoricalIndex(df.columns, ordered=True, categories=months)
df = df.sort_index(axis=1)
print (df)
month  January  February  March  April
name                                  
x         82.0      88.0   48.0   80.0
y         80.0      76.0   82.0   77.0
z          NaN      81.0   85.0   86.0

If want swap columns and index values:

months = ['January','February','March','April',
          'May','June','July','August',
          'September','October','November','December']

#your groupby code
#s = df.groupby(...)
df = s.unstack(0)
df.index = pd.CategoricalIndex(df.index, ordered=True, categories=months)
df = df.sort_index()
print (df)
name         x     y     z
month                     
January   82.0  80.0   NaN
February  88.0  76.0  81.0
March     48.0  82.0  85.0
April     80.0  77.0  86.0

df.plot()

Upvotes: 1

Related Questions