为我想用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值。
答案 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()
注意,透视数据框看起来像
In [2]: pivoted_data
Out[2]:
y_value
category a b
x_axis
1 10 15
2 20 30