如何用python创建人口金字塔


人口金字塔是显示给定人口的年龄和性别分布的图表。这对于了解人口构成和人口增长趋势很有用。

本教程介绍如何在 Python 中创建以下人口金字塔:

Python 中的年龄金字塔

Python 中的年龄金字塔

假设我们有以下数据集,显示给定国家按年龄组划分的男性和女性总人口:

 #import libraries 
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt

#create dataframe
df = pd.DataFrame({'Age': ['0-9','10-19','20-29','30-39','40-49','50-59','60 -69','70-79','80-89','90+'], 
                    'Male': [9000, 14000, 22000, 26000, 34000, 32000, 29000, 22000, 14000, 3000], 
                    'Female': [8000, 15000, 19000, 28000, 35000, 34000, 28000, 24000, 17000, 5000]})
#view dataframe 
df

    Age Male Female
0 0-9 9000 8000
1 10-19 14000 15000
2 20-29 22000 19000
3 30-39 26000 28000
4 40-49 34000 35000
5 50-59 32000 34000
6 60-69 29000 28000
7 70-79 22000 24000
8 80-89 14000 17000
9 90+ 3000 5000

我们可以使用以下代码为数据创建人口金字塔:

 #define x and y limits
y = range(0, len(df))
x_male = df['Male']
x_female = df['Female']

#define plot parameters
fig, axes = plt.subplots(ncols=2, sharey=True, figsize=(9, 6))

#specify background color and plot title
fig.patch.set_facecolor('xkcd:light grey')
plt.figtext(.5,.9,"Population Pyramid", fontsize=15, ha='center')
    
#define male and female bars
axes[0].barh(y, x_male, align='center', color='royalblue')
axes[0].set(title='Males')
axes[1].barh(y, x_female, align='center', color='lightpink')
axes[1].set(title='Females')

#adjust grid parameters and specify labels for y-axis
axes[1].grid()
axes[0].set(yticks=y, yticklabels=df['Age'])
axes[0].invert_xaxis()
axes[0].grid()

#displayplot
plt.show() 

Python 中的年龄金字塔

从图中可以看出,男性和女性的分布相当对称,大部分人口处于中年阶段。通过简单地查看这张图表,我们就可以很好地了解这个特定国家的人口统计数据。

请注意,您可以通过在matplotlib 颜色列表中指定颜色来调整绘图背景和各个条形的颜色。

例如,我们可以指定“hotpink”和“dodgerblue”与“米色”背景一起使用:

 fig.patch.set_facecolor('xkcd: beige ')
    
axes[0].barh(y, x_male, align='center', color=' dodgerblue ')

axes[1].barh(y, x_female, align='center', color=' hotpink ')

plt.show() 

具有不同调色板的 Python 人口金字塔

您可以根据最适合您的颜色随意更改调色板。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注