Распределение участков населения и групп - PullRequest
0 голосов
/ 12 октября 2018

Я хотел бы представить распределение по возрасту населения (общее распределение) и распределение по возрасту для каждого пола (мужчина, женщина).Каждая группа содержит разное количество человек (например, 40 женщин, 32 мужчин).Я пытаюсь сделать это с seaborn.distplot, чтобы я мог удалить столбцы и сохранить только кривую.Я могу построить 3 кривые, но частоты неверны: кривая распределения для каждого пола должна быть меньше, чем распределение общей популяции.

Мы можем считать, что набор данных состоит из 2 столбцов: 1 столбец содержитпол, другой возраст.

Вот мой код, столбец 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 голосов
/ 12 октября 2018

Вот минимальный пример, который делает то, что вы хотите:

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

Я просто переименовал также столбцы, чтобы было понятнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...