【问题标题】:Sorting bar chart values that have been grouped in descending order对已按降序分组的条形图值进行排序
【发布时间】:2019-09-18 08:27:49
【问题描述】:

我遇到了一个问题,我无法让我的条形图以按区域分组的列的降序显示。

我尝试对这些值进行排序,然后分组并绘制在条形图上。

df1 = df.drop(['Total Volume', '4046', '4225', '4770', 'Total Bags', 'Small Bags', 'Large Bags', 'XLarge Bags', 'year', 'Unnamed: 0', 'Date'], axis=1)
df1 = df1.sort_values(['AveragePrice'],ascending=True).groupby('region').mean().plot(kind='bar', figsize=(15,5))

该图仍按区域按字母顺序绘制值。

【问题讨论】:

  • 请在帖子中包含您使用的数据框(而不是图片),以便其他人可以轻松重现您的问题。
  • 您是否尝试在执行 sort_values 之前执行 groupby

标签: python pandas dataframe


【解决方案1】:

先将值分组,然后排序并将ascending=True更改为False

df1 = df1.groupby('region').mean().sort_values(['AveragePrice'],ascending=False).plot(kind='bar', figsize=(15,5))

此外,该代码将覆盖 df1 作为 Matplotlib 子图,而不是更新数据框。进一步调用 df1 将只输出类型 (matplotlib.axes._subplots.AxesSubplot) 而不是显示数据框。

要使用分组和排序的数据框更新df1,您应该首先操作数据框并保存它,然后在更新的数据框上调用 plot,如下所示:

# Manipulate the dataframe
df1 = df1.groupby('region').mean().sort_values(['AveragePrice'],ascending=False)

# Plot the results
df1.plot(kind='bar', figsize=(15,5))

这样,对df1 的进一步调用将按预期显示分组和排序的数据框。

【讨论】:

  • 谢谢!这正是我所需要的。我是 Python 的新手,所以我很欣赏你回答背后的细节。
猜你喜欢
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 2021-02-14
  • 2021-07-06
  • 1970-01-01
  • 2016-03-10
相关资源
最近更新 更多