pandas通过matplotlib和seaborn对图表进行分组。

问题描述 投票:0回答:1

我如何将下面的数据转换为单个图表(趋势线)中的名称?

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
pandas matplotlib pandas-groupby seaborn
1个回答
1
投票

使用 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()
© www.soinside.com 2019 - 2024. All rights reserved.