Python 如何使用数据框组按不同范围绘制饼图?

Python 如何使用数据框组按不同范围绘制饼图?,python,pandas,csv,matplotlib,dataframe,Python,Pandas,Csv,Matplotlib,Dataframe,我的代码是: import pandas as pd import matplotlib.pyplot as plt from matplotlib import style df=pd.read_csv("patient1.csv") a=df.loc[df.Age<18,['Age']] print(a) b=df.loc[(df.Age >= 18) & (df.Age < 60),['Age']] print(b) c=df.loc[df.Age>=60

我的代码是:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import style

df=pd.read_csv("patient1.csv")
a=df.loc[df.Age<18,['Age']]
print(a)
b=df.loc[(df.Age >= 18) & (df.Age < 60),['Age']]
print(b)
c=df.loc[df.Age>=60,['Age']]
print(c)
d=pd.concat([a,b,c],keys=["0-17","18-59","60+"])
e=d.loc[:,['Age']]
print(e)
实际上,我想画一张0-17,18-59,60岁以上患者的饼图。从代码中,您可以看到,我已将数据框按不同的年龄范围进行了分隔。我需要向代码中添加什么来绘制饼图?

您需要先创建
范围。然后,通过以下步骤进行聚合和重塑

最后用途:

编辑:


我有点困惑-你需要什么?每个范围的总和或平均值?或者别的什么?我想在饼图上画出0-17,18-59,60岁以上的年龄。我明白,但我没有逻辑。因为很明显,每个范围只需要一个值…这就是我想要绘图的方式:-好的,这就是我说的-每个范围只需要3个数字。实际上,这是来自单个文件的数据,这是三个标签,即0-17、18-59、60+,而不是三个不同的绘图。你怎么能知道我只需要一张饼图,有3个范围,所以需要3张图。或者有什么错误?可能需要
df.groupby(['Age']).size().plot.pie()
-但是没有关于bin.Hmmm的信息,最好是尝试在excel和post picture中创建此图,因为似乎我们彼此不了解。我只需要一个包含0-17,18-59,60+部分的饼图。
Name    Surname Age
fdgf    bcbb    21
Yash    Singhvi 19
Yash    Singhvi 19
piyush  daga    20
cvcv    dfg     16
sdsd    sdsd    65
dsfef   fedf    12
rfef    fefe    70
fdgf    rgd     10
df['bins'] = pd.cut(df['Age'],bins=[0,17,59,120], labels=["0-17","18-59","60+"])
df = df.groupby(['Age', 'bins']).size().unstack(fill_value=0)
print (df)
bins  0-17  18-59  60+
Age                   
10       1      0    0
12       1      0    0
16       1      0    0
19       0      2    0
20       0      1    0
21       0      1    0
65       0      0    1
70       0      0    1

df.plot.pie(subplots=True,figsize=(8, 3))
a = df.groupby('bins').size()
#a = df['bins'].value_counts()
print (a)
bins
0-17     3
18-59    4
60+      2
dtype: int64

a.plot.pie(figsize=(4,4))