绘制多个Groupedby Pandas

时间:2016-10-25 15:41:34

标签: python pandas matplotlib plot

为我想用Pandas groupby绘制的大型数据集绘制图表。

groupby是两层。一个是数字(所需的x轴),一个是分类的(想要在堆积的条形图上制作这个不同的框。我将组的值相加,这将创建我的y_axis。

所以我按数据框架构建了以下组。

     import pandas as pd
     import matplotlib.pyplot as plt
     data= pd.DataFrame()

     data['x_axis'] = [1,1,2,2]
     data['category'] = ['a','b','a','b']
     data['y_value'] = [10,15,20,30]

     data = data.groupby(['x_axis','category']).sum()
     data.reset_index(inplace = True)


     data.plot.bar(x = 'x_axis', y= 'y_value', stacked = True)
     plt.show()

这导致以下

    numeric_x_axis   category  sum_value
            1            a         10
                         b         15
            2            a         20
                         b         30

因此,欲望图表将有一个堆积的条形图,x轴为(1,2),堆叠条形为a和b,总和值为y轴值。

但是,图表会显示多个重复的x_axis值。

1 个答案:

答案 0 :(得分:0)

您确定要使用groupby吗?根据您的描述,pivot似乎可以为您提供更好的服务。

data = pd.DataFrame()

data['x_axis'] = [1,1,2,2]
data['category'] = ['a','b','a','b']
data['y_value'] = [10,15,20,30]

pivoted_data = data.pivot('x_axis', 'category')
pivoted_data.plot(kind='bar', stacked=True)
plt.show()

enter image description here

注意,透视数据框看起来像

In [2]: pivoted_data
Out[2]: 
         y_value    
category       a   b
x_axis              
1             10  15
2             20  30