Использование pandas и seaborn для построения диаграммы возрастной пирамиды

#python #pandas #dataframe #seaborn

#python #pandas #фрейм данных #seaborn

Вопрос:

Я работаю над макетными данными переписи и хочу использовать свой фрейм данных, чтобы взять значения «Мужской» и «Женский» из столбца «Пол» и сопоставить их с их возрастом, что само по себе является другим столбцом. Я перепробовал несколько разных способов и вообще не могу вывести это на график. Данные были очищены во фрейме данных, и я также попытался разделить эти данные с помощью массива numpy, хотя я знаю, что есть способ сделать это, просто манипулируя фреймом данных, хотя я не знаю как.

Попытка создания кода для пирамиды

 *pop_age = df.T
pop_age.reset_index(inplace=True)
pop_age.columns = ['Age', 'Female', 'Male']
f, ax = plt.subplots(figsize=(10,20))
age_plot = sns.barplot(x='Male', y='Age', data=pop_age, lw=0)
age_plot = sns.barplot(x='Female', y='Age', data=pop_age, lw=0)
age_plot.set(xlabel='Population Count', ylabel='Age', title='Population Age Pyramid')*
 

Numpy-массив, разделяющий данные

 men=[]
women=[]

for i in range(len(data2)):
    if data2[i][7] == 'Male':
        a=data2[i]
        men.append(a)
    elif data2[i][7] == 'Female' or 'Fe male':
        b=data2[i]
        woman.append(b)
 

Любая помощь будет оценена. 🙂

Ответ №1:

Ваш код кажется хорошим. Вам просто нужно точно определить цвет, который вы хотите для каждого столбчатого графика: age_plot = sns.barplot(x='Male', y='Age', data=pop_age, lw=0, color = 'thecoloryouwant') затем вам просто нужно создать легенду вручную и изменить метки по оси x, чтобы получить только положительные значения.

Комментарии:

1. Ошибка значения: несоответствие длины: ожидаемая ось содержит 10237 элементов, новые значения содержат 3 элемента. Я все еще сталкиваюсь с этой ошибкой, есть какие-либо проблемы? 🙂

2. Это, по-видимому, в этой строке: —-> 3 pop_age.columns = [‘Возраст’, ‘Женский’, ‘Мужской’]