在前两篇内容中,我们先后掌握了 Linux 系统环境与数据库 SQL 操作,搭建了数据存储与运行的基础环境。在数据处理与统计分析的完整流程中,数值计算与数据可视化是两个核心环节:高效的数值运算能支撑大规模数据的统计与变换,直观的可视化图表能帮助我们快速发现数据规律、验证分析结论。

本篇作为系列第三篇,我们将系统讲解 NumPy 与 Matplotlib 两大核心工具:NumPy 是 Python 生态中数值计算的底层基础,Matplotlib 是数据可视化的经典工具。

一、NumPy:高性能数值计算工具

1.1 NumPy 核心概述

NumPy 是专门用于数组操作与数值计算的工具库,核心载体是多维同类型数组对象。它底层由 C 语言实现,采用连续内存存储与向量化运算机制,相比 Python 原生列表运算效率更高、内存占用更低,支持批量的数值运算,是数据分析、机器学习、科学计算领域的底层依赖工具,绝大多数数据处理与 AI 框架都基于 NumPy 的数组体系构建。

1.2 多维数组的核心属性

多维数组是 NumPy 的核心数据结构,它有五个核心属性,分别从维度、形状、规模、类型等维度描述数组特征:

  1. 轴数(维度数):表示数组的轴的数量,也就是数组的维度。一维数组有 1 个轴,二维数组有 2 个轴,维度越高轴的数量越多。
  2. 形状:描述数组每个维度的长度,以元组形式呈现,直观体现数组的行列数与层级结构,形状的长度等于数组的轴数。
  3. 元素总数:表示数组中包含的所有元素的总个数,等于形状中各个维度长度的乘积。
  4. 数据类型:描述数组中每个元素的数据类型,同一个数组内所有元素的数据类型保持一致。
  5. 元素字节数:表示数组中单个元素在内存中占用的字节大小,由数组的数据类型决定。

1.3 多维数组的创建方式

NumPy 提供了多种数组创建方式,适配不同的业务场景:

  1. 直接转换创建:将已有的序列数据直接转换为多维数组,适合已有原始数据的场景。
  2. 全零数组创建:生成所有元素均为 0 的数组,常用于初始化占位数据。
  3. 全一数组创建:生成所有元素均为 1 的数组,常用于矩阵运算的单位初始化。
  4. 连续序列数组创建:生成指定范围内的连续数值序列数组,类似原生的序列生成但运算效率更高。
  5. 随机数组创建:生成符合指定分布的随机数数组,支持均匀分布、整数分布、正态分布等多种随机模式。
  6. 等间距数组创建:在指定区间内生成固定数量的等间距数值数组,常用于坐标轴刻度、采样点生成。

1.4 常用基础运算函数

NumPy 内置了大量基础数值处理函数,可直接对数组内所有元素批量执行运算,无需逐元素遍历:

  1. 向上取整:对数组内所有元素取大于等于该值的最小整数。
  2. 向下取整:对数组内所有元素取小于等于该值的最大整数。
  3. 取绝对值:计算数组内所有元素的绝对值。
  4. 空值判断:判断数组内每个元素是否为空值,返回布尔形式的结果数组。
  5. 元素乘法:对两个数组的对应位置元素执行乘法运算。
  6. 元素除法:对两个数组的对应位置元素执行除法运算。
  7. 位置查找:查找符合指定条件的元素的位置索引。
  8. 四舍五入:对数组内所有元素按指定精度执行四舍五入。

1.5 统计类函数

NumPy 提供了完整的统计计算函数,是数据统计分析的核心工具,支持对整个数组或指定轴方向执行统计计算:

  1. 平均值:计算数组内元素的算术平均值。
  2. 最小值:查找数组内的最小元素。
  3. 最大值:查找数组内的最大元素。
  4. 求和:计算数组内所有元素的总和,支持按行或按列分别求和。
  5. 累加和:依次计算数组元素的累计和,返回与原数组形状一致的累加结果。
  6. 标准差:计算数组数据的标准差,反映数据的离散程度。
  7. 方差:计算数组数据的方差,是衡量数据波动程度的核心统计指标。

补充说明:轴是 NumPy 的重要概念,二维数组中 0 轴对应行索引变化的方向,沿列执行聚合计算;1 轴对应列索引变化的方向,沿行执行聚合计算。通过指定轴可以实现按行或按列的分组统计,运算后对应维度会被压缩消失。

1.6 排序与去重函数

  1. 排序函数:对数组内的元素按从小到大的顺序重新排列,支持按指定轴排序。
  2. 去重函数:去除数组内的重复元素,返回所有唯一的元素值,常用于数据清洗、唯一值统计。

1.7 数组运算规则

NumPy 的数组运算分为标量运算、数组对应元素运算、矩阵乘法三类,各自有不同的规则与适用场景:

  1. 数组与标量的运算:数组中的每个元素都会和该数值执行对应运算,属于广播运算的一种,无需数组形状匹配。
  2. 两个数组的对应元素运算:要求两个数组的形状完全一致,运算时两个数组对应位置的元素分别执行运算,返回相同形状的结果数组。
  3. 矩阵乘法:属于线性代数运算,有严格的形状要求:第一个数组的列数必须等于第二个数组的行数;运算过程为第一个数组的行与第二个数组的列对应元素相乘后求和,最终结果的行数等于第一个数组的行数,列数等于第二个数组的列数。

二、Matplotlib:数据可视化绘图工具

2.1 Matplotlib 核心概述

Matplotlib 是 Python 生态中最经典的绘图可视化工具,作用是将数值数据转化为各类可视化图表,让数据的趋势、分布、对比关系更直观地呈现,是数据分析结果展示、规律验证、报告输出的核心工具。

使用 Matplotlib 绘图前需要先导入对应的工具模块,同时需要配置中文字体,避免图表中的中文内容出现乱码问题。它与 NumPy 高度兼容,可直接接收 NumPy 数组作为绘图数据源,无需额外格式转换。

2.2 完整图表的绘制流程

以最基础的折线图为例,绘制一张完整的图表分为六个标准步骤:

  1. 准备数据集:整理需要可视化的原始数据,确定横纵轴对应的数据源。
  2. 创建画布:初始化绘图的画布容器,可自定义画布大小与分辨率。
  3. 绘制核心图形:调用对应图表的绘制方法,将数据映射为图形元素。
  4. 设置图表细节:完善图表的辅助元素,包含五个细分操作:
  5. 设置 x 轴与 y 轴的刻度值、刻度标签,调整坐标轴的展示范围;
  6. 设置图例,标注不同数据系列的含义;
  7. 设置网格线,提升数据读取的便捷性;
  8. 设置 x 轴、y 轴的标签名称,说明坐标轴的业务含义;
  9. 设置图表的标题,说明整张图表的主题。
  10. 保存图片:将绘制完成的图表保存为本地图片文件,支持多种图片格式。
  11. 显示图片:在运行窗口中弹出展示绘制完成的图表。

2.3 高级绘图扩展能力

除了基础的单图绘制,Matplotlib 还支持更复杂的绘图场景:

  1. 多子图绘制:在同一张画布中划分多个子绘图区域,每个区域绘制独立的图表,适合多组数据的对比展示。
  2. 面向对象式绘图:通过创建坐标系对象的方式控制绘图,更灵活地控制画布布局、多坐标系管理,适合复杂的定制化图表开发。

2.4 常用图表类型与适用场景

Matplotlib 支持多种图表类型,不同图表适配不同的分析场景:

  1. 折线图:一般用于分析数据的变化趋势,展示数据随时间或连续变量的变化规律。
  2. 柱状图:一般用于固定分类的数值对比,直观展示不同类别之间的数值差异。
  3. 直方图:一般用于连续数值的分布统计,展示数据在不同区间的分布密度。
  4. 饼图:一般用于展示少量分类的占比情况,直观呈现各分类在整体中的占比关系。
  5. 散点图:一般用于查看数据的分布特征、离散程度,也可用于分析两个变量之间的相关性。

三、逻辑图

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐