📜  如何在Python使用 Plotly 创建人口金字塔?

📅  最后修改于: 2022-05-13 01:54:56.797000             🧑  作者: Mango

如何在Python使用 Plotly 创建人口金字塔?

人口金字塔是数据的图形表示,其中包含两个实体,即特定人口的年龄和性别。它通常被人口学家用来研究人口。年龄值分为子类别,性别列包含属于该年龄组的该特定性别的人口。

它被称为人口金字塔,因为它的图形形状类似于金字塔。其中最年轻的年龄组的人保留在图表的底部,年龄最大的人保留在图表的顶部。

在本文中,我们将研究如何在Python创建人口金字塔。为了实现我们的目的,我们将使用两个额外的库PandasPlotly来绘制我们的图形。如果你没有安装这些库,你可以通过 pip 命令安装它们。

pip install plotly

让我们看看如何使用Python的 Plotly 库制作人口金字塔

第 1 步:我们将首先在我们的代码中导入库。



Python
# Importing libraries
import pandas as pd
import plotly.graph_objects as gp


Python
data = pd.read_csv('India-2019.csv')
display(data)


Python
y_age = data['Age']
x_M = data['M']
x_F = data['F'] * -1


Python
# Creating instance of the figure
fig = gp.Figure()
  
# Adding Male data to the figure
fig.add_trace(gp.Bar(y= y_age, x = x_M, 
                     name = 'Male', 
                     orientation = 'h'))
  
# Adding Female data to the figure
fig.add_trace(gp.Bar(y = y_age, x = x_F,
                     name = 'Female', orientation = 'h'))
  
# Updating the layout for our graph
fig.update_layout(title = 'Population Pyramid of India-2019',
                 title_font_size = 22, barmode = 'relative',
                 bargap = 0.0, bargroupgap = 0,
                 xaxis = dict(tickvals = [-60000000, -40000000, -20000000,
                                          0, 20000000, 40000000, 60000000],
                                
                              ticktext = ['6M', '4M', '2M', '0', 
                                          '2M', '4M', '6M'],
                                
                              title = 'Population in Millions',
                              title_font_size = 14)
                 )
  
fig.show()


第 2 步:读取包含我们数据的 CSV 文件。

Python

data = pd.read_csv('India-2019.csv')
display(data)

输出:

我们的数据集

我们可以注意到我们的数据集包含三列,第一列是包含不同年龄范围的“年龄”,第二列和第三列包含属于这些年龄组的男性和女性性别类别的人数。

第 3 步:数据准备

在 y 轴上,我们将绘制年龄,在 x 轴上,我们将绘制男性和女性数字

Python



y_age = data['Age']
x_M = data['M']
x_F = data['F'] * -1

第 4 步:绘制图形

我们将创建一个我们已经导入的 graph_object 模块的实例,并使用这个实例,我们将使用 add_trace() 方法将男性和女性数据一一添加到图形中。

如果您注意到我为我的图表放置了标题并将 bargap 设置为 0,我们甚至可以根据我们的要求自定义绘图布局,以便我们的条形没有任何间距。对于 X 轴上的值,我们可以自定义图形以及在 X 轴上设置标题和刻度值。

Python

# Creating instance of the figure
fig = gp.Figure()
  
# Adding Male data to the figure
fig.add_trace(gp.Bar(y= y_age, x = x_M, 
                     name = 'Male', 
                     orientation = 'h'))
  
# Adding Female data to the figure
fig.add_trace(gp.Bar(y = y_age, x = x_F,
                     name = 'Female', orientation = 'h'))
  
# Updating the layout for our graph
fig.update_layout(title = 'Population Pyramid of India-2019',
                 title_font_size = 22, barmode = 'relative',
                 bargap = 0.0, bargroupgap = 0,
                 xaxis = dict(tickvals = [-60000000, -40000000, -20000000,
                                          0, 20000000, 40000000, 60000000],
                                
                              ticktext = ['6M', '4M', '2M', '0', 
                                          '2M', '4M', '6M'],
                                
                              title = 'Population in Millions',
                              title_font_size = 14)
                 )
  
fig.show()

输出:

2019年印度人口金字塔