返回
面向初学者的 Python 数据分析指南:探索 NumPy
见解分享
2024-01-29 00:30:16
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的基础知识和操作,将使您能够轻松处理和分析大型数据集,从数据中提取有价值的见解,并做出明智的决策。
常见问题解答
- NumPy是什么?
NumPy是Python中的一个库,