[计算机基础] 【光环国际《Python数据分析5天训练营》】

119 阅读3分钟

NumPy 和 Pandas 是 Python 数据分析中两个非常重要的库,它们在功能、数据结构和使用场景上存在显著区别。以下是它们的主要区别:

光环国际《Python数据分析5天训练营》_优课it

  1. 数据结构

1 NumPy

  • 核心数据结构:NumPy 的核心是 ndarray(N-dimensional array,多维数组)。它是一个固定大小的、同类型数据的数组。
  • 特点
    • 高效性:NumPy 是用 C 语言编写的,底层操作非常高效,适合大规模数值计算。
    • 同质性:数组中的所有元素必须是相同的数据类型(如 intfloat)。
    • 多维性:支持一维数组(向量)、二维数组(矩阵)以及更高维度的数组。

.2 Pandas

  • 核心数据结构
    • Series:一维数组,类似于 NumPy 的一维数组,但索引可以是任意类型(如字符串、日期等)。
    • DataFrame:二维表格数据,类似于 Excel 表格,每一列可以是不同的数据类型(如整数、浮点数、字符串等)。
  • 特点
    • 灵活性:支持异构数据,即同一表格中可以包含多种数据类型。
    • 强大的数据操作:提供丰富的方法用于数据清洗、筛选、分组、合并等操作。
    • 索引功能强大:支持标签索引和位置索引,操作更加灵活。
  1. 功能和用途

2.1 NumPy

  • 功能
    • 数值计算:提供强大的数学函数库,支持矩阵运算、统计计算、线性代数等。
    • 数组操作:支持数组的创建、索引、切片、重塑等操作。
  • 使用场景
    • 适合处理大规模的数值数据,如图像处理、机器学习中的特征向量等。
    • 是 Pandas、SciPy 等库的底层依赖。

2.2 Pandas

  • 功能
    • 数据清洗:处理缺失值、重复值、异常值等。
    • 数据筛选和分组:支持条件筛选、分组聚合(groupby)等操作。
    • 数据合并:支持合并(merge)、连接(join)、拼接(concat)等操作。
    • 时间序列分析:提供强大的时间序列工具。
  • 使用场景
    • 适合处理结构化数据,如表格数据、CSV 文件、Excel 文件等。
    • 广泛应用于数据分析、数据科学和机器学习的数据预处理阶段。
  1. 性能

.1 NumPy

  • 性能优势:由于 NumPy 是用 C 语言实现的,底层操作非常高效,适合大规模数值计算。
  • 适用场景:当数据量较大且操作较为复杂时,NumPy 的性能优势尤为明显。

2 Pandas

  • 性能特点:Pandas 在处理小到中等规模的数据时表现良好,但在大规模数据处理时可能会比 NumPy 慢。
  • 优化方法:可以通过 groupbyapply 等方法优化性能,但在极端情况下,可能需要借助 NumPy 或其他工具。
  1. 使用场景

.1 NumPy

  • 科学计算:如线性代数、矩阵运算、傅里叶变换等。
  • 机器学习:作为特征向量、权重矩阵等数据的存储和计算工具。
  • 图像处理:处理像素数据。

.2 Pandas

  • 数据分析:如清洗、筛选、分组、聚合等操作。
  • 数据预处理:在机器学习中,用于处理输入数据。
  • 时间序列分析:处理时间序列数据,如股票价格、气象数据等。
  1. 示例代码对比

5.1 NumPy 示例

Python复制

import numpy as np# 创建一个二维数组arr = np.array([[1, 2, 3], [4, 5, 6]])# 数组操作print(arr.shape)  # 输出数组形状print(arr.mean())  # 计算平均值print(arr[:, 1])  # 提取第二列

5.2 Pandas 示例

Python复制

import pandas as pd# 创建一个 DataFramedata = {'Name': ['Alice', 'Bob', 'Charlie'],        'Age': [25, 30, 35],        'City': ['New York', 'Los Angeles', 'Chicago']}df = pd.DataFrame(data)# 数据操作print(df[df['Age'] > 30])  # 条件筛选print(df.groupby('City').mean())  # 分组聚合

总结

  • NumPy 是一个专注于数值计算的库,适合处理大规模的同质数据,性能高效。
  • Pandas 是一个专注于数据分析的库,适合处理结构化数据,功能强大且灵活。

在实际使用中,NumPy 和 Pandas 往往结合使用。例如,Pandas 可以基于 NumPy 的数组进行操作,而 NumPy 可以处理 Pandas 提供的数据结构。