现有一个人口统计数据文件,其包含以下因子:国家/宗教,出生年份,年龄,性别。根据这些信息,如何使用Jupyter Notebook绘制一张人口金字塔图
时间: 2024-03-31 17:38:21 浏览: 47
要绘制人口金字塔图,可以按照以下步骤操作:
1. 在Jupyter Notebook中打开一个新的Notebook文件,在第一行输入以下代码以导入必要的库:
```python
import pandas as pd
import matplotlib.pyplot as plt
```
2. 从数据文件中读取数据,并创建一个包含人口数据的Pandas DataFrame,其中包含以下列:国家/宗教,出生年份,年龄和性别。例如:
```python
df = pd.read_csv('population.csv')
```
3. 使用Pandas的groupby()函数将数据按性别分组,并计算每个年龄组的人口数量。
```python
male_data = df[df['Gender']=='M'].groupby('Age').size()
female_data = df[df['Gender']=='F'].groupby('Age').size()
```
4. 使用Matplotlib绘制人口金字塔图。首先,创建一个新的Figure对象,并添加两个子图,一个用于男性数据,一个用于女性数据。接下来,使用barh()函数绘制水平条形图。
```python
fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True, figsize=(8, 5))
ax1.barh(male_data.index, male_data.values, align='center', color='blue')
ax2.barh(female_data.index, -female_data.values, align='center', color='red')
```
5. 最后,添加标签和标题,并显示图表。
```python
ax1.set(title='Male', xlabel='Number of people')
ax2.set(title='Female', xlabel='Number of people', xlim=[-max(female_data.values)-100, max(male_data.values)+100])
ax1.set_ylabel('Age')
plt.show()
```
完整的代码如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('population.csv')
male_data = df[df['Gender']=='M'].groupby('Age').size()
female_data = df[df['Gender']=='F'].groupby('Age').size()
fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True, figsize=(8, 5))
ax1.barh(male_data.index, male_data.values, align='center', color='blue')
ax2.barh(female_data.index, -female_data.values, align='center', color='red')
ax1.set(title='Male', xlabel='Number of people')
ax2.set(title='Female', xlabel='Number of people', xlim=[-max(female_data.values)-100, max(male_data.values)+100])
ax1.set_ylabel('Age')
plt.show()
```
这样就可以绘制一个简单的人口金字塔图了,具体效果如下图所示:
![人口金字塔图](https://img-blog.csdnimg.cn/20210929221631580.png)
阅读全文