pandas如何处理缺失值,将缺失值剔除
·
在 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)
更多推荐
所有评论(0)