返回

面向初学者的 Python 数据分析指南:探索 NumPy

见解分享

NumPy:数据分析的利器

在数据主宰的时代,数据分析已成为不可或缺的一项技能。Python以其强大的库生态系统而著称,使其成为数据分析的理想选择。而NumPy(Numerical Python)则是Python中一颗璀璨的明珠,为数值计算和数据分析提供了无与伦比的工具。

NumPy基础:数据结构

NumPy的核心数据结构是n维数组,称为ndarray。ndarray是一个同构容器,这意味着它存储相同数据类型的元素。我们可以通过以下几种方式创建数组:

  • 使用np.array()函数将Python列表或元组转换为ndarray。
import numpy as np

# 从列表创建ndarray
list = [1, 2, 3, 4, 5]
arr = np.array(list)
print(arr)  # 输出:[1 2 3 4 5]

# 从元组创建ndarray
tuple = (1, 2, 3, 4, 5)
arr = np.array(tuple)
print(arr)  # 输出:[1 2 3 4 5]
  • 使用np.zeros()、np.ones()和np.full()等函数创建具有指定形状和值的数组。
# 创建形状为(3, 4)的元素全为0的ndarray
arr = np.zeros((3, 4))
print(arr)  # 输出:
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

# 创建形状为(3, 4)的元素全为1的ndarray
arr = np.ones((3, 4))
print(arr)  # 输出:
# [[1. 1. 1. 1.]
#  [1. 1. 1. 1.]
#  [1. 1. 1. 1.]]

# 创建形状为(3, 4)的元素全为5的ndarray
arr = np.full((3, 4), 5)
print(arr)  # 输出:
# [[5. 5. 5. 5.]
#  [5. 5. 5. 5.]
#  [5. 5. 5. 5.]]
  • 从现有数组中创建副本或视图。
# 创建arr1的副本
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = arr1.copy()

# 修改arr1中的元素
arr1[0] = 10

# arr2不会受到影响
print(arr2)  # 输出:[1 2 3 4 5]

# 创建arr1的视图
arr3 = arr1.view()

# 修改arr3中的元素
arr3[0] = 20

# arr1也会受到影响
print(arr1)  # 输出:[20 2 3 4 5]

ndarray具有以下几个重要属性:

  • 形状: 数组的维度和大小。
  • 数据类型: 数组中元素的数据类型。
  • 步幅: 指定数组中元素在内存中存储方式的元组。

NumPy操作:数组处理

NumPy提供了一系列强大的操作,用于对数组进行各种操作:

算术运算

  • 数组之间:加法(+)、减法(-)、乘法(*)、除法(/)
# 两个数组相加
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
arr3 = arr1 + arr2
print(arr3)  # 输出:[ 7  9 11 13 15]

# 标量与数组相乘
scalar = 5
arr4 = scalar * arr1
print(arr4)  # 输出:[ 5 10 15 20 25]
  • 标量和数组之间:加法(+)、减法(-)、乘法(*)、除法(/)
  • 内积和外积:np.dot()和np.cross()

逻辑运算

  • 比较运算符:大于(>)、小于(<)、等于(==)
# 比较两个数组元素是否相等
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([6, 7, 8, 9, 10])
arr3 = arr1 == arr2
print(arr3)  # 输出:[False False False False False]
  • 布尔运算:与(&)、或(|)、非(~)

数组索引和切片

  • 索引:使用方括号访问特定元素。
# 访问数组的第一个元素
arr = np.array([1, 2, 3, 4, 5])
print(arr[0])  # 输出:1
  • 切片:使用冒号(:)提取数组的子集。
# 提取数组的前两个元素
arr = np.array([1, 2, 3, 4, 5])
arr_sliced = arr[:2]
print(arr_sliced)  # 输出:[1 2]

其他操作

  • 数组重塑:np.reshape()和np.ravel()
# 将数组重塑为形状为(2, 3)的数组
arr = np.array([1, 2, 3, 4, 5, 6])
arr_reshaped = arr.reshape((2, 3))
print(arr_reshaped)  # 输出:
# [[1 2 3]
#  [4 5 6]]

# 将数组展开为一维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
arr_raveled = arr.ravel()
print(arr_raveled)  # 输出:[1 2 3 4 5 6]
  • 数组合并:np.concatenate()和np.stack()
# 水平合并两个数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr_concatenated = np.concatenate((arr1, arr2))
print(arr_concatenated)  # 输出:[1 2 3 4 5 6]

# 垂直合并两个数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])
arr_stacked = np.stack((arr1, arr2), axis=0)
print(arr_stacked)  # 输出:
# [[[ 1  2  3]
#   [ 4  5  6]]
#  [[ 7  8  9]
#   [10 11 12]]]
  • 统计函数:np.mean()、np.std()和np.max()
# 计算数组的平均值
arr = np.array([1, 2, 3, 4, 5])
mean = np.mean(arr)
print(mean)  # 输出:3.0

# 计算数组的标准差
arr = np.array([1, 2, 3, 4, 5])
std = np.std(arr)
print(std)  # 输出:1.5811388300841898

NumPy在数据分析中的应用

NumPy在数据分析中发挥着至关重要的作用,提供了一系列工具:

数据预处理

  • 缺失值处理:np.isnan()和np.fillna()
  • 归一化和标准化:np.min-max()和np.std()
  • 特征工程:np.log()、np.exp()和np.power()

数据建模

  • 线性代数:矩阵乘法、逆运算和特征值分解
  • 统计分析:相关性分析、回归分析和聚类分析

数据可视化

  • 数据可视化:使用NumPy数组创建图表和图形

结论

NumPy是Python数据分析不可或缺的工具,为初学者和经验丰富的从业者提供了强大的功能。掌握NumPy的基础知识和操作,将使您能够轻松处理和分析大型数据集,从数据中提取有价值的见解,并做出明智的决策。

常见问题解答

  1. NumPy是什么?
    NumPy是Python中的一个库,