Pandas 删除缺失值
最后修改时间:2025年3月1日
Pandas 是一个强大的 Python 数据处理库。在处理 DataFrame 时,处理缺失值是一项常见任务。本教程将通过实际示例介绍如何使用 Pandas 删除缺失值。
缺失值可能会干扰数据分析。Pandas 提供了 `dropna` 等方法来处理它们。这些方法非常灵活,可以根据特定标准删除包含缺失值的行或列。
删除包含任何缺失值的行
此示例显示了如何删除包含任何缺失值的行。
dropna_any.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df_dropped = df.dropna() print(df_dropped)
`dropna` 方法会删除包含任何缺失值的行。这对于清理包含零散缺失数据的数据集非常有用。
删除包含任何缺失值的列
此示例演示了如何删除包含任何缺失值的列。
dropna_columns.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df_dropped = df.dropna(axis=1) print(df_dropped)
`axis=1` 参数会删除包含任何缺失值的列。当不需要包含缺失数据的列时,此参数非常有用。
删除所有值都缺失的行
此示例显示了如何删除所有值都缺失的行。
dropna_all.py
import pandas as pd import numpy as np data = { 'A': [1, np.nan, np.nan, 4], 'B': [np.nan, np.nan, np.nan, 4], 'C': [1, np.nan, np.nan, np.nan] } df = pd.DataFrame(data) df_dropped = df.dropna(how='all') print(df_dropped)
`how='all'` 参数会删除所有值都缺失的行。这对于删除完全空白的行非常有用。
删除特定列中包含缺失值的行
此示例演示了如何删除特定列中包含缺失值的行。
dropna_subset.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df_dropped = df.dropna(subset=['A', 'B']) print(df_dropped)
`subset=['A', 'B']` 参数会删除在 'A' 或 'B' 列中包含缺失值的行。这对于有针对性的清理非常有用。
删除非缺失值数量少于阈值的行
此示例显示了如何删除非缺失值数量少于指定数量的行。
dropna_threshold.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df_dropped = df.dropna(thresh=2) print(df_dropped)
`thresh=2` 参数会删除非缺失值少于 2 个的行。这对于保留部分完整的行非常有用。
就地删除缺失值
此示例演示了如何在不创建新 DataFrame 的情况下删除缺失值。
dropna_inplace.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df.dropna(inplace=True) print(df)
`inplace=True` 参数会直接修改 DataFrame。这对于内存效率非常有用。
使用自定义逻辑删除缺失值
此示例显示了如何根据自定义逻辑删除缺失值。
dropna_custom.py
import pandas as pd import numpy as np data = { 'A': [1, 2, np.nan, 4], 'B': [np.nan, 2, 3, 4], 'C': [1, 2, 3, np.nan] } df = pd.DataFrame(data) df_dropped = df[df['A'].notna() & df['B'].notna()] print(df_dropped)
`notna` 方法会过滤掉 'A' 和 'B' 列不缺失的行。这允许进行自定义过滤逻辑。
删除缺失值的最佳实践
- 理解数据: 在删除之前,请分析缺失值的模式。
- 使用适当的方法: 根据数据上下文选择 `dropna` 或 `thresh` 等方法。
- 保留数据: 除非必要,否则避免删除过多数据。
- 验证结果: 删除缺失值后,请检查数据集。
来源
在本文中,我们探讨了如何在 Pandas DataFrame 中删除缺失值。
作者
所有 Pandas 教程列表。