通过对列进行分组来绘制pandas数据框中的列的饼图

问题描述 投票:0回答:1

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

我想绘制一个pandas数据帧的列,以便我可以在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)

但是,它不起作用。

如何更改查询?

谢谢!

python python-3.x pandas dataframe matplotlib
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.