【问题标题】:plot piechart for a column in pandas dataframe by grouping a column通过对列进行分组,为 pandas 数据框中的列绘制饼图
【发布时间】:2019-04-02 03:32:11
【问题描述】:

这个问题与我之前的问题有关。

我想绘制一列熊猫数据框,以便我可以在 matplotlib 中绘制饼图。

数据框(my_df):

  name   value 
  cscas   15   
  wfdce   17   
  ynvas   22   
  rebdf   36   
  dgref   16    
  ytjvs   26      
  qtvsa   39      
  wvwev   32    

我需要添加一个新列来标记值属于一个组, 例如我的_df:

  name   value value_group
  cscas   15   [10, 19]
  wfdce   17   [10, 19]
  ynvas   22   [20, 29]
  rebdf   36   [30, 39]
  dgref   16   [10, 19] 
  ytjvs   26   [20, 29]   
  qtvsa   39   [30, 39]   
  wvwev   32   [30, 39] 

我需要使用 value_group 进行“分组”,以便可以在饼图中以百分比的形式显示“名称”的数量。

 [10, 19]  2
 [30, 39]  3
 ....

我用过:

   fig, ax = plt.subplots()
  my_df['value_group'] = ((my_df['value']//10 * 10).astype('string') , (self.__df['value']//10 + 1) * 10 - 1).astype('string'))

  new_df = my_df.groupby(['value_group'])['name'].size()

  ax.pie(new_df.values, labels = [x for x in new_df.keys()], autopct='%1.1f%%', shadow = False, startangle = 90)

但是,它不起作用。

如何更改查询?

谢谢!

【问题讨论】:

    标签: python python-3.x pandas dataframe matplotlib


    【解决方案1】:

    你试过了吗:

    my_df['value_group'] = pd.cut(my_df['value'], range(0, 50, 10), right=False)
    
    new_df = my_df.groupby('value_group').agg({'name': 'count'})
    new_df.plot.pie(y='value', figsize=(6, 6), autopct='%1.1f%%', shadow = False, startangle = 90)
    

    【讨论】:

    • 谢谢,但是,如何创建和添加“value_group”的新列?
    猜你喜欢
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2020-11-05
    • 1970-01-01
    • 2023-02-08
    • 2017-05-07
    相关资源
    最近更新 更多