全部文章

4-NumPy、Scipy、pandas、matplotlib概述

NumPy、SciPy、pandas 和 matplotlib 是 Python 生态系统中 互补协作 的科学计算工具库,它们 没有直接的包含关系,但存在明确的依赖和功能分层。以下是它们的核心定位和关系:


1. 基础层:NumPy

  • 定位:数值计算的基础库。以矩阵为基础的数学计算模块,纯数学存储和处理大型矩阵。 这个是很基础的扩展,其余的扩展都是以此为基础。

  • 功能

    • 提供多维数组(ndarray)和矩阵运算。

    • 支持高效的数学函数(如线性代数、傅里叶变换)。

  • 依赖关系

    • 所有其他库均依赖 NumPy(例如 SciPy、pandas 均基于 NumPy 的数组操作)。


2. 扩展层:SciPy

  • 定位:基于 NumPy 的高级科学计算工具库。‌数值计算库,在numPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。 方便、易于使用、专为科学和工程设计的Python工具包.它包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等等。SciPy‌的中文翻译是“Scientific Python”,发音为“Sigh Pie”。SciPy是一个开源的Python库,它是NumPy生态系统的核心组成部分之一,提供了大量高级数学、科学和工程计算功能‌, 官方文档:https://scipy.org/

  • 功能

    • 扩展 NumPy 的功能,提供更复杂的数学算法(如优化、积分、信号处理、统计等)。

    • 模块化设计(例如 scipy.optimizescipy.stats)。

  • 依赖关系

    • 完全依赖 NumPy,但 不包含 NumPy

    • 与 NumPy 是兄弟关系,共同构成科学计算的核心工具链。


3. 数据处理分析层:pandas

  • 定位:数据分析和结构化数据处理。基于numPy 的一种工具,为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

  • 功能

    • 提供 DataFrame 和 Series 数据结构,支持表格数据的读写、清洗、聚合和统计分析。

    • 时间序列处理功能强大。

  • 依赖关系

    • 基于 NumPy 实现底层数据存储(例如 DataFrame 内部用 NumPy 数组存储数据)。

    • 与 SciPy 无直接依赖,但可结合使用(例如用 SciPy 做统计检验)。


4. 可视化层(绘图):matplotlib

  • 定位:数据可视化。对于图像美化方面比较完善,可以自定义线条的颜色和式样,可以在一张绘图纸上绘制多张小图,也可在一张图上绘制多条线,可以很方便的对数据进行可视化分析。

  • 功能

    • 生成静态、交互式或动态图表(折线图、散点图、直方图等)。

    • 提供类似 MATLAB 的绘图接口。

  • 依赖关系

    • 独立库,但常与 NumPy、pandas 协同使用(例如用 pandas 读取数据后用 matplotlib 绘图)。

    • pandas 内置简化的绘图接口(如 df.plot() 实际调用 matplotlib)。


关系图示

        +----------------+
        |   matplotlib   | → 可视化(独立,但常与下方协作)
        +----------------++----------------+ +----------------+
|     pandas     | |     SciPy      | → pandas(数据处理)、SciPy(科学计算)
+----------------+ +----------------+
        ↑               ↑
        +----------------+
        |     NumPy      | → 基础数值计算(所有库的底层依赖)
        +----------------+

典型协作流程示例

数据读取与处理

import pandas as pd
data = pd.read_csv("data.csv")  # pandas 读取数据

数值计算

import numpy as np
mean = np.mean(data["column"])  # NumPy 计算均值

科学计算

from scipy import stats
result = stats.ttest_ind(data["group1"], data["group2"])  # SciPy 做统计检验

可视化

import matplotlib.pyplot as plt
data["column"].plot(kind="hist")  # pandas 调用 matplotlib 绘图
plt.show()

总结

  • NumPy 是基石:所有库的底层依赖。

  • SciPy 是扩展:提供 NumPy 不具备的高级数学工具。

  • pandas 是数据处理核心:依赖 NumPy,专注于结构化数据操作。

  • matplotlib 是可视化工具:独立但与其他库无缝协作。

它们共同构成 Python 数据科学生态系统的核心工具链,各司其职,协同工作。

 

 

 

posted @ 2025-04-01 12:03  指尖下的世界  阅读(83)  评论(0)    收藏  举报