- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 遍历数组
- NumPy - 重塑数组
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 分割数组
- NumPy - 展平数组
- NumPy - 转置数组
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 副本和视图
- NumPy - 元素级数组比较
- NumPy - 过滤数组
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O
- NumPy 排序和高级操作
- NumPy - 排序数组
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 将值追加到数组
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 填充缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 处理缺失数据
处理数组中的缺失数据
处理缺失数据是数据分析和处理中常见的一个挑战。数组中的缺失数据可能由于各种原因而产生,例如数据收集不完整、数据输入错误或故意省略。
在 NumPy 和数据分析中,处理缺失值涉及有效地识别、处理和处理它们,以确保数据完整性和准确的结果。
识别缺失数据
为了处理缺失数据,第一步是识别它。在 NumPy 中,缺失值通常在浮点数组中表示为 np.nan。您可以使用特定的函数,例如 **np.isnan()** 来检测这些缺失值。
示例
在下面的示例中,我们创建了一个包含由 **np.nan** 表示的缺失值的数组。然后,我们使用 np.isnan() 函数创建一个掩码来识别这些缺失值 -
import numpy as np # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Checking for missing values is_nan = np.isnan(arr) print("Array with Missing Values:\n", arr) print("Missing Value Mask:\n", is_nan)
以下是获得的输出 -
Array with Missing Values: [ 1. 2. nan 4. nan 6.] Missing Value Mask: [False False True False True False]
删除缺失数据
删除缺失数据涉及消除数据集中数据缺失的部分。
在 NumPy 中,您可以使用 **布尔索引** 从数组中排除 **NaN** 值。例如,创建一个识别缺失值的掩码,然后使用它来过滤掉这些值。
示例
在这个例子中,我们从一个包含由“np.nan”表示的缺失值的数组开始。然后,我们使用布尔索引删除这些缺失值,使用 np.isnan() 函数过滤掉 np.nan 条目 -
import numpy as np # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Removing missing values cleaned_arr = arr[~np.isnan(arr)] print("Original Array:\n", arr) print("Array with Missing Values Removed:\n", cleaned_arr)
这将产生以下结果 -
Original Array: [ 1. 2. nan 4. nan 6.] Array with Missing Values Removed: [1. 2. 4. 6.]
替换缺失数据
替换缺失数据意味着用替代值填充数据缺失的地方。在 NumPy 中,您可以使用 **np.nan_to_num()** 函数用特定数字(例如零或其他值的平均值)替换 **NaN** 值。以下是语法 -
numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)
其中,
- **x:** 包含 NaN 值、无穷大或其他数值的输入数组。
- **copy:** 一个布尔值,指示是否要创建数组的副本(默认为 True)。如果为 False,则操作可能会就地执行。
- **nan:** 用于替换 NaN 值的值。默认为 0.0。
- **posinf:** 用于替换正无穷大 (inf) 的值。如果未指定,则默认为一个非常大的数字。
- **neginf:** 用于替换负无穷大 (-inf) 的值。如果未指定,则默认为一个非常小的(负)数字。
示例
在下面的示例中,我们创建了一个包含由“np.nan”表示的缺失值的数组。然后,我们使用 np.nan_to_num() 函数将这些缺失值替换为零,该函数用指定的值填充 np.nan 条目 -
import numpy as np # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Replacing missing values with zero filled_arr = np.nan_to_num(arr, nan=0) print("Original Array:\n", arr) print("Array with Missing Values Replaced:\n", filled_arr)
以下是上述代码的输出 -
Original Array: [ 1. 2. nan 4. nan 6.] Array with Missing Values Replaced: [1. 2. 0. 4. 0. 6.]
插值缺失数据
插值缺失数据涉及根据周围数据估计和填充数据集中缺失的值。
插值不是用像平均值这样的常数替换缺失值,而是通过分析数据中的趋势或模式来预测缺失值应该是什么。
例如,如果“4”和“8”之间缺少一个值,则插值可能会将其估计为“6”。
示例
在下面的示例中,我们通过使用 SciPy 中的“interp1d”应用线性插值来处理包含缺失值 (np.nan) 的数组。此函数根据非缺失数据估计和填充缺失值,从而产生一个完整的数组 -
import numpy as np from scipy.interpolate import interp1d # Creating an array with missing values arr = np.array([1, 2, np.nan, 4, np.nan, 6]) # Creating an index array indices = np.arange(len(arr)) # Creating a mask for non-missing values mask = ~np.isnan(arr) # Performing linear interpolation interp_func = interp1d(indices[mask], arr[mask], kind='linear', fill_value='extrapolate') filled_arr = interp_func(indices) print("Original Array:\n", arr) print("Array with Interpolated Missing Values:\n", filled_arr)
获得的输出如下所示 -
Original Array: [ 1. 2. nan 4. nan 6.] Array with Interpolated Missing Values: [1. 2. 3. 4. 5. 6.]