Python 通过分组实现熊猫逐组可视化
我面临着一个非常恼人的问题。我有一个数据集,其中有不同地区和年份的销售额 我希望根据不同的地区,将年度总销售额可视化 下面是我的groupby代码:Python 通过分组实现熊猫逐组可视化,python,pandas,matplotlib,group-by,visualization,Python,Pandas,Matplotlib,Group By,Visualization,我面临着一个非常恼人的问题。我有一个数据集,其中有不同地区和年份的销售额 我希望根据不同的地区,将年度总销售额可视化 下面是我的groupby代码: groups = df.groupby(["Region", "Year"])["Sales"].sum() groups.plot.bar(color="blue") plt.show() 我得到的输出如下所示: 我有两个问题: 1.当我的图表看起来很混乱时,我怎么能把区域和年份栏彼此分开呢?一条分隔线或者实际上是一个荧光灯也可以,或者更大的
groups = df.groupby(["Region", "Year"])["Sales"].sum()
groups.plot.bar(color="blue")
plt.show()
我得到的输出如下所示:
我有两个问题:
1.当我的图表看起来很混乱时,我怎么能把区域和年份栏彼此分开呢?一条分隔线或者实际上是一个荧光灯也可以,或者更大的间距对我来说是一个很好的解决方案。
(请看下面我的意思:)
或
我根本不知道如何解决这个问题
问题2。我怎么能让这张图片按销售额最多的地区排序,然后是年销售额第二大的地区,依此类推?一种基于区域的降序排序
我尝试了下面的代码:
groups = df.groupby(["Region", "Year"])["Sales"].sum()
groups2=groups.sort_values(axis=[0][1],ascending=False)
groups.plot.bar(color="blue")
plt.show()
但是我得到了一个列表索引超出范围的错误。使用axis=[0]无法解决此问题
非常感谢您事先的帮助 按照ChrisD的建议,您可以通过将条形图按区域显示为不同的面来获得工作结果
sns.catplot(x='Year', y='Sales', col='Region', data=groups, kind='bar')
出于显示目的,您可能需要设置纵横比的格式。按照ChrisD的建议,您可以通过将条形图按区域显示为不同的面来获得工作结果
sns.catplot(x='Year', y='Sales', col='Region', data=groups, kind='bar')
出于显示目的,您可能需要格式化纵横比。接受第二个允许这种分组的变量
hue
。接受允许这种分组的第二个变量hue
。感谢您的回复。不幸的是,我得到了一个“无法解释”年错误。我做错了什么?:(谢谢!这可能是数据表形状或格式的问题。您是否尝试过用reset_index()重置groupby中的索引?非常感谢Kevin!不,我没有重置索引。所以现在我重置了它,效果很好!)非常感谢!有没有办法将所有这些图表按降序排列?我的意思是,销售最多的地区应该放在第一位,其他地区则按降序排列?再次感谢您的巨大帮助!您通常可以使用catplot的顺序参数(如col_order)对可视化数据进行排序(可能是排顺序、色调顺序或顺序,取决于你的口味)。你试过了吗?我知道我应该四处看看颜色顺序,但我不确定应该添加什么作为参数…我无法从catplot方法的信息中找到它。不幸的是:。(谢谢你的回复。不幸的是,我得到了“无法解释”的年份)错误。我做错了什么?:(谢谢!这可能是数据表形状或格式的问题。您是否尝试过使用reset_index()重置groupby中的索引?非常感谢Kevin!不,我没有重置索引。所以现在我重置了索引,效果很好!)非常感谢!有没有办法将所有这些图表按降序排列?我的意思是,销售最多的地区应该放在第一位,其他地区则按降序排列?再次感谢您的巨大帮助!您通常可以使用catplot的顺序参数(如col_order)对可视化数据进行排序(可能是行顺序、色调顺序或顺序,取决于您的口味)。您试过了吗?我知道我应该四处查看颜色顺序,但我不确定应该添加什么作为参数…不幸的是,我无法从catplot方法的信息中找到它(