在 Pandas 中,处理缺失值并将其剔除主要可通过 dropna() 方法实现。下面为你详细介绍不同场景下使用该方法剔除缺失值的操作:

剔除包含缺失值的行

若要删除数据中任意列包含缺失值的行,可以使用 dropna() 方法,且不指定参数。以下是示例代码:

import pandas as pd
import numpy as np

# 创建包含缺失值的示例数据
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, 7, 8],
    'C': [9, 10, 11, np.nan]
}
df = pd.DataFrame(data)

# 剔除包含缺失值的行
df_dropped_rows = df.dropna()
print("剔除包含缺失值的行后的数据:")
print(df_dropped_rows)

在上述代码中,dropna() 方法会检查每一行,只要该行存在缺失值,就将其删除。

剔除包含缺失值的列

如果要删除包含缺失值的列,可以通过设置 axis=1 参数来实现。示例如下:

import pandas as pd
import numpy as np

# 创建包含缺失值的示例数据
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, 7, 8],
    'C': [9, 10, 11, np.nan]
}
df = pd.DataFrame(data)

# 剔除包含缺失值的列
df_dropped_columns = df.dropna(axis=1)
print("剔除包含缺失值的列后的数据:")
print(df_dropped_columns)

这里 axis=1 表示按列操作,即只要某列存在缺失值,就将该列删除。

按特定条件剔除缺失值

若只想在某些列存在缺失值时才删除行,可以通过 subset 参数指定这些列。示例代码如下:

import pandas as pd
import numpy as np

# 创建包含缺失值的示例数据
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, 7, 8],
    'C': [9, 10, 11, np.nan]
}
df = pd.DataFrame(data)

# 仅当 'A' 列存在缺失值时删除行
df_dropped_specific = df.dropna(subset=['A'])
print("仅当 'A' 列存在缺失值时删除行后的数据:")
print(df_dropped_specific)

在这个例子中,subset=['A'] 表示只有当 A 列存在缺失值时,才会删除对应的行。

剔除缺失值占比超过一定阈值的行或列

你可以结合 thresh 参数来删除缺失值占比超过一定数量的行或列。示例如下:

import pandas as pd
import numpy as np

# 创建包含缺失值的示例数据
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, 7, 8],
    'C': [9, 10, 11, np.nan]
}
df = pd.DataFrame(data)

# 剔除缺失值数量超过 1 个的行
df_dropped_threshold = df.dropna(thresh=len(df.columns) - 1)
print("剔除缺失值数量超过 1 个的行后的数据:")
print(df_dropped_threshold)

上述代码里,thresh=len(df.columns) - 1 表示每行至少要有 len(df.columns) - 1 个非缺失值,否则该行会被删除。

以上代码展示了使用 Pandas 处理缺失值并将其剔除的不同方式,你可以根据实际需求进行选择和调整。


import pandas as pd
import numpy as np

# 创建包含缺失值的示例数据
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, 7, 8],
    'C': [9, 10, 11, np.nan]
}
df = pd.DataFrame(data)

# 剔除包含缺失值的行
df_dropped_rows = df.dropna()
print("剔除包含缺失值的行后的数据:")
print(df_dropped_rows)

# 剔除包含缺失值的列
df_dropped_columns = df.dropna(axis=1)
print("剔除包含缺失值的列后的数据:")
print(df_dropped_columns)

# 仅当 'A' 列存在缺失值时删除行
df_dropped_specific = df.dropna(subset=['A'])
print("仅当 'A' 列存在缺失值时删除行后的数据:")
print(df_dropped_specific)

# 剔除缺失值数量超过 1 个的行
df_dropped_threshold = df.dropna(thresh=len(df.columns) - 1)
print("剔除缺失值数量超过 1 个的行后的数据:")
print(df_dropped_threshold)
    
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐