数据探索实验

news/2025/2/27 10:02:27

数据探索

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()

在这里插入图片描述


http://www.niftyadmin.cn/n/5869921.html

相关文章

《机器学习数学基础》补充资料:从几何角度理解矩阵

《机器学习数学基础》第 2 章,专门讲解矩阵,因为它在线性代数中占据重要地位,也就是在机器学习中,占据重要定位了。为了更好地理解矩阵,本文从几何角度,更直观地对矩阵的某些性质和特征给予阐述。 注&…

Android OpenGLES2.0开发(十一):渲染YUV

人生如逆旅,我亦是行人 Android OpenGLES开发:EGL环境搭建Android OpenGLES2.0开发(一):艰难的开始Android OpenGLES2.0开发(二):环境搭建Android OpenGLES2.0开发(三&am…

nodejs用ws模块反向代理socks5数据,即用ws写服务端和客户端及加密

首先思路是客户端发送socks5请求数据——>服务端解密并解析socks5数据是否为真,解析出Host和port,并用net.socket访问目标网站,目标网站返回数据,服务端再用ws发送返回数据给客户端 //解析socks5数据和返回socks5格式响应 //在读下面代码…

Spring Boot @Component注解介绍

Component 是 Spring 中的一个核心注解,用于声明一个类为 Spring 管理的组件(Bean)。它是一个通用的注解,可以用于任何层次的类(如服务层、控制器层、持久层等)。通过 Component 注解,Spring 会…

C#开发的Base64编码及解码完整源码及注意事项

在软件开发时,经常用Base64编码和解码功能。本文介绍一个简单易用的Base64 编码和解码工具,顾名思义,就是简单快捷地进行 Base64 代码的解码或编码操作。您的数据可以轻松地编码为 Base64 编码,也可以解码为可读的格式。传输数据时…

《论微服务架构及其应用》审题技巧 - 系统架构设计师

论微服务架构及其应用写作框架 一、考点概述 本论题“论微服务架构及其应用”主要考查考生对微服务架构的理解、应用经验以及软件设计实现能力。微服务架构作为当前软件开发领域的重要趋势,其核心思想是将单一应用程序拆分成一组小型、自治的服务,每个…

克隆项目到本地

1、前置 Git安装配置超详细教程_git安装及配置教程-CSDN博客 git clone ssh-key, 挑重点 - 知子 - 博客园 (cnblogs.com) 2、用 git clone ① 在资源管理器中,找到项目要下载的位置 ② 空白处 右键 git bash here ③ 输入指令 git clone -b dev ssh://git58.49…

医院HIS接入大模型:算力基础设施与训练能力的深度剖析与测算

一、引言 1.1 研究背景与意义 在数字化医疗快速发展的当下,医院信息系统(Hospital Information System,HIS)作为医疗信息化的核心枢纽,承载着患者诊疗信息、医院运营管理等关键数据 ,对提升医疗服务质量、优化医院管理流程起着至关重要的作用。然而,传统 HIS 在面对日…