通过对列进行分组以在pandas数据框中为列绘制饼图

时间:2019-04-02 03:32:12

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

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

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

数据帧(my_df):

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

我需要添加一个新列以标记该值属于某个组, 例如my_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)

但是,它不起作用。

如何更改查询?

谢谢!

1 个答案:

答案 0 :(得分:0)

您尝试过吗:

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)