pandas сгруппировать в чарты через matplotlib и seaborn - PullRequest
1 голос
/ 02 мая 2020

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

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

1 Ответ

1 голос
/ 02 мая 2020

Используйте Series.unstack для изменения формы, затем конвертируйте столбцы в CategoricalIndex и сортируйте для правильного порядка и последнего графика по 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

Если хотите поменять местами столбцы и значения индекса:

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()
...