实训:分析1996-2015年人口数据特征间的关系
需求说明:人口数据6个特征:年份,年末总人口,男性人口,女性人口,城镇人口,乡村人口 。查看各个特征随时间的变化情况
1 提取数据
import numpy as np
import matplotlib.pyplot as plt
data = np.load('populations.npz',allow_pickle=True)
#data.files
dt =data['data']
df =data['feature_names']
2 绘制散点图和折线图
#设置中文
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus'] = False
fg =plt.figure(figsize=(10,8))
#创建子图1
ax1 =fg.add_subplot(2,1,1)
plt.scatter(range(dt.shape[0]-2),dt[:-2,1],marker='o',c='r')
plt.scatter(range(dt.shape[0]-2),dt[:-2,2],marker='D',c='b')
plt.scatter(range(dt.shape[0]-2),dt[:-2,3],marker='v',c='y')
plt.scatter(range(dt.shape[0]-2),dt[:-2,4],marker='p',c='g')
plt.scatter(range(dt.shape[0]-2),dt[:-2,5],marker='+',c='c')
plt.legend(['年末总人口','男性人口','女性人口','城镇人口','乡村人口'])
plt.xlabel('时间-年份')
plt.ylabel('人口数(万人)')
plt.xticks(range(dt.shape[0]-2),dt[:-2,0],rotation=45)
plt.title('1996-2015年各特征人口变化散点图')
#创建子图2
ax2 =fg.add_subplot(2,1,2)
plt.plot(range(dt.shape[0]-2),dt[:-2,1],c='r',linestyle='--')
plt.plot(range(dt.shape[0]-2),dt[:-2,2],c='b',linestyle='--')
plt.plot(range(dt.shape[0]-2),dt[:-2,3],c='y',linestyle='--')
plt.plot(range(dt.shape[0]-2),dt[:-2,4],c='g',linestyle='--')
plt.plot(range(dt.shape[0]-2),dt[:-2,5],c='c',linestyle='--')
plt.legend(['年末总人口','男性人口','女性人口','城镇人口','乡村人口'])
plt.xlabel('时间-年份')
plt.ylabel('人口数(万人)')
plt.xticks(range(dt.shape[0]-2),dt[:-2,0],rotation=45)
plt.title('1996-2015年各特征人口数折线图')
plt.show()
3 绘制直方图
#绘制直方图
f1 =plt.figure(figsize=(12,10))
#子图1
ax1 =f1.add_subplot(2,2,1)
plt.bar(range(dt.shape[0]-2),dt[:-2,2],width=0.5)
plt.xticks(range(dt.shape[0]-2),dt[:-2,0],rotation=45)
plt.xlabel('1996-2015年男性人口数目')
plt.ylabel('人口数目(万人)')
#子图2
ax2 =f1.add_subplot(2,2,2)
plt.bar(range(dt.shape[0]-2),dt[:-2,3],width=0.5)
plt.xticks(range(dt.shape[0]-2),dt[:-2,0],rotation=45)
plt.xlabel('1996-2015年女性人口数目')
plt.ylabel('人口数目(万人)')
#子图3
ax3 =f1.add_subplot(2,2,3)
plt.bar(range(dt.shape[0]-2),dt[:-2,4],width=0.5)
plt.xticks(range(dt.shape[0]-2),dt[:-2,0],rotation=45)
plt.xlabel('1996-2015年城市人口数目')
plt.ylabel('人口数目(万人)')
#子图4
ax4 =f1.add_subplot(2,2,4)
plt.bar(range(dt.shape[0]-2),dt[:-2,5],width=0.5)
plt.xticks(range(dt.shape[0]-2),dt[:-2,0],rotation=45)
plt.xlabel('1996-2015年乡村人口数目')
plt.ylabel('人口数目(万人)')
plt.show()
4 绘制饼图
#绘制饼图
f2 =plt.figure(figsize=(12,10))
#子图1
ax1 =f2.add_subplot(2,2,1)
plt.pie(dt[:-2,2],labels=dt[:-2,0],autopct ='%1.1f%%')
plt.title('1996-2015年男性人口比例')
#子图2
ax2 =f2.add_subplot(2,2,2)
plt.pie(dt[:-2,3],labels=dt[:-2,0],autopct ='%1.1f%%')
plt.title('1996-2015年女性人口比例')
#子图3
ax3 =f2.add_subplot(2,2,3)
plt.pie(dt[:-2,4],labels=dt[:-2,0],autopct ='%1.1f%%')
plt.title('1996-2015年城市人口比例')
#子图4
ax4 =f2.add_subplot(2,2,4)
plt.pie(dt[:-2,5],labels=dt[:-2,0],autopct ='%1.1f%%')
plt.title('1996-2015年乡村人口比例')
plt.show()
5 绘制线箱图
#绘制线箱图
f3 =plt.figure(figsize=(12,8))
label =['年末总人口','男性人口','女性人口','城镇人口','乡村人口']
plt.boxplot(([list(dt[:-2,i]) for i in range(1,6)]),labels =label,meanline=True)
plt.title('1996-2015年各特征人口数线箱图')
plt.ylabel('人口数(万人)')
plt.show()