人口和群体的分布图

时间:2018-10-12 11:13:39

标签: python seaborn

我想绘制一个人口的年龄分布(总分布)和每个性别(男性,女性)的年龄分布。每个组包含不同数量的人(例如40位女性,32位男性)。 我正在尝试使用seaborn.distplot进行此操作,以便可以删除条形并仅保留曲线。我可以绘制3条曲线,但频率不正确:每种性别的分布曲线应小于总人口的分布。

我们可以认为数据集由两列组成:一列包含性别,另一列包含年龄。

这是我的代码,第0列包含性别,第1列包含年龄

sexes = ["Female", "Male"]
colors = ["orchid", "steelblue"]
ax = sns.distplot(df[:,0], color="k", hist = False, label = "Total")
for j, sexe in enumerate(sexes):
    ax = sns.distplot(df[:,1], color=colors[-j-1], hist = False, label = sexes_en[-j-1], norm_hist = True)
plt.show()

1 个答案:

答案 0 :(得分:0)

这是一个可以满足您需求的最小示例:

pop = {"Gender" : ["M", "F", "F", "M"],
"Age" : [20, 25, 30, 22]}
df = pd.DataFrame(pop)
sexes = {"M": "Male", "F": "Female"}
colors = ["orchid", "steelblue"]
ax = sns.distplot(df["Age"], color="k", hist = False, label = "Total")
for color_idx, sexe in enumerate(set(df["Gender"])):
   ax = sns.distplot(df["Age"][df["Gender"] == sexe], color=colors[color_idx], hist = False, label = sexes[sexe])


plt.show()

我刚刚还对列进行了重命名,这样更清晰

相关问题