数据探索
1.分析1996~2015年人口总数趋势
### 1)训练要点
(1)掌握NumPy读取数据的方法
(2)掌握pyplot基础语法
(3)掌握散点图绘制方法
### 2)需求说明
人口数据总共有6个特征,分别为年份、年末总人口、男性人口、女性人口、城镇人口、乡村人口。查看年末总人口随着时间推移发生的变化情况可以分析出未来年人口总数变化的方向。
### 3)实验步骤
(1)使用NumPy库读取人口数据
python">import numpy as np #导入numpy
import matplotlib.pyplot as plt #导入pyplot
%matplotlib inline
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置图中文显示
使用numpy的load函数读取数据populations.npz,并将读取的数据保存在file对象中
python">file = np.load("./populations.npz",allow_pickle=True)
针对file对象,利用其files属性查看结构,包括列名和数据
python">print(file.files)
将列名保存在feature变量中
python">feature = file['feature_names']
将数据保存在data_set变量中
python">data_set = file['data']
(2)对人口数据进行初步处理
利用shape函数查看data_set的形状(多少行,多少列)
python">print(data_set.shape)
查看数据集data_set,根据需要进行相应的处理(记录顺序,空值等),为下一步绘图做准备
python">print(data_set)
将处理好的数据集赋值给data_set_for_autocheck变量
python">data_set_for_autocheck = data_set[0:20,:] #去除空值变量
(3)使用pyplot绘制时间与总人口的散点图,并保存为png图片
python">year=data_set_for_autocheck[:,0][::-1]#年份
total_member=data_set_for_autocheck[:,1][::-1]
male_member=data_set_for_autocheck[:,2][::-1]
female_member=data_set_for_autocheck[:,3][::-1]
city_member=data_set_for_autocheck[:,4][::-1]
country_member=data_set_for_autocheck[:,5][::-1]
plt.figure(figsize=(12, 4))
plt.scatter(year,total_member)
plt.savefig("1996~2015年末人口散点图.png",dpi=120)
plt.show()
2.分析1996~2015年人口数据各个特征的分布和分散状况
## 1)训练要点
(1)掌握子图的绘制
(2)掌握折线图绘制
(3)掌握饼图绘制
(4)掌握箱线图绘制
## 2)需求说明
通过绘制各年份男女人口数目及城乡人口数目的折线图,男女人口比例及城乡人口比例的饼图可以发现人口结构的变化。而绘制每个特征的箱线图则可以发现不同特征增长或者减少的速率是否变的缓慢。
## 3)实现步骤
(1)绘制 1996 年 ~2015 年男女人口及乡镇人口折线图
在同一画布上,创建两个子图,分别绘制不同年份男女人口以及乡镇人口数量的折线图,图片保存到文件名为“1996-2015年男女人口及乡镇人口数目折线图.png”
python">plt.figure(figsize=(10, 4))
plt.subplot(2, 1, 1)
plt.plot(year, male_member,label='男性人口')
plt.plot(year, female_member,label='女性人口')
plt.title('1996-2015年男女人口')
plt.legend()# 显示图例
plt.subplot(2, 1, 2)
plt.plot(year, city_member,label='城市人口')
plt.plot(year, country_member,label='乡村人口')
plt.title('1996-2015年乡镇人口')
plt.legend()
#调整间距
plt.tight_layout()
plt.savefig("1996-2015年男女人口及乡镇人口数目折线图.png",dpi=120)
plt.show()
(3)绘制 1996 年 ~2015 年男女人口及乡镇人口比例饼图
在画布上创建4X5的子图,每个子图分别绘制不同年份男女人口比例饼图,图片保存到文件名为“1996-2015年男女人口比例饼图.png”
python">index = 0
fig, axes = plt.subplots(4, 5, figsize=(15, 12))
fig.set_facecolor('white')#设置背景颜色为白色
for i in range(4):
for j in range(5):
total = total_member[index]
male = male_member[index]
female = female_member[index]
male_ratio = male / total
female_ratio = female / total
axes[i, j].pie([male_ratio, female_ratio], labels=['男性', '女性'],autopct='%1.1f%%')
axes[i, j].set_title(f'{year[index]} ')
index += 1
plt.tight_layout()
plt.savefig("1996-2015年男女人口比例饼图.png",dpi=120)
plt.show()
在画布上创建4X5的子图,每个子图分别绘制不同年份乡镇人口比例饼图,图片保存到文件名为“1996-2015年乡镇人口比例饼图”
python">index = 0
fig, axes = plt.subplots(4, 5, figsize=(15, 12))
fig.set_facecolor('white')#设置背景颜色为白色
for i in range(4):
for j in range(5):
total = total_member[index]
country = country_member[index]
city = city_member[index]
country_ratio = country / total
city_ratio = city / total
axes[i, j].pie([country_ratio, city_ratio], labels=['乡村', '城市'],autopct='%1.1f%%')
axes[i, j].set_title(f'{year[index]}')
index += 1
plt.tight_layout()
plt.savefig("1996-2015年乡镇人口比例饼图.png",dpi=120)
plt.show()
(5)绘制 1996 年 ~2015 年各类人口箱线图,图片保存到文件名为“1996~2015年人口变化箱线图-姓名-学号.png”
python">population_data = [male_member, female_member, country_member, city_member]
labels = ['男性人口', '女性人口', '乡村人口', '城镇人口']
plt.boxplot(population_data, labels=labels)
plt.title('1996~2015年人口变化箱线图')
plt.xlabel('人口类型')
plt.ylabel('人口数量')
plt.savefig("1996~2015年人口变化箱线图.png",dpi=120)
plt.show()