我的代码是:

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)

文件patient1.csv包含的数据如下:
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

实际上,我想绘制 0-17,18-59,60+ 岁患者的饼图。从代码中可以看出,我已经将不同年龄范围的数据框分开了。我需要在代码中添加什么来绘制饼图?

最佳答案

您首先需要 cut 来创建 range 。然后 groupby ,聚合 size 并通过 unstack 重塑。

最后使用 DataFrame.plot.pie :

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))

python - 如何使用不同范围的数据框组绘制饼图?-LMLPHP

编辑:
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))

python - 如何使用不同范围的数据框组绘制饼图?-LMLPHP

关于python - 如何使用不同范围的数据框组绘制饼图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46542572/

10-13 04:26