df.dropna()
是 Pandas 中用于删除包含缺失值 (NaN
或 None
) 的行或列的函数。它可以根据不同的参数设置灵活地删除数据中的缺失值。
基本语法:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:
-
axis: 指定沿着哪个轴删除缺失值。
axis=0
:删除包含缺失值的行(默认)。axis=1
:删除包含缺失值的列。
-
how: 指定删除行或列的条件(仅当
axis=0
时作用于行,axis=1
时作用于列)。'any'
:只要存在缺失值,删除该行或列(默认)。'all'
:仅当该行或列的所有值都是缺失值时,才删除。
-
thresh: 保留行/列的非缺失值的最小数量。如果某行或某列中非缺失值的数量少于
thresh
,则会被删除。例如,thresh=2
表示该行或列中必须至少有 2 个非缺失值,否则删除。 -
subset: 指定检查缺失值的列或行的子集。只有这些列(如果
axis=0
)或这些行(如果axis=1
)中的缺失值才会被考虑。 -
inplace: 是否直接在原数据上进行操作,还是返回一个新的
DataFrame
。inplace=False
(默认):返回一个删除了缺失值后的新DataFrame
,不修改原数据。inplace=True
:直接修改原数据,不返回新的DataFrame
。
示例:
-
删除包含缺失值的行(默认行为):
import pandas as pd data = {'A': [1, 2, None], 'B': [4, None, None], 'C': [7, 8, 9]} df = pd.DataFrame(data) # 删除任何包含缺失值的行 df_cleaned = df.dropna() print(df_cleaned)
输出:
A B C 0 1.0 4.0 7
-
删除包含缺失值的列:
df_cleaned = df.dropna(axis=1) print(df_cleaned)
输出:
C 0 7 1 8 2 9
-
how='all'
删除全为缺失值的行或列:df_cleaned = df.dropna(axis=0, how='all') print(df_cleaned)
输出:
A B C 0 1.0 4.0 7 1 2.0 NaN 8 2 NaN NaN 9
这里并没有删除任何行,因为没有行完全由缺失值组成。
-
使用
thresh
保留至少有一定数量非缺失值的行:df_cleaned = df.dropna(thresh=2) print(df_cleaned)
输出:
A B C 0 1.0 4.0 7 1 2.0 NaN 8
-
指定
subset
参数检查某些列:df_cleaned = df.dropna(subset=['A', 'B']) print(df_cleaned)
输出:
A B C 0 1.0 4.0 7 1 2.0 NaN 8
-
inplace=True
修改原数据:df.dropna(inplace=True) print(df)
此时,
df
自身已经被修改为删除了包含缺失值的行的状态。
总结:
dropna()
是 Pandas 中非常强大的函数,用于根据不同条件灵活地删除包含缺失值的行或列。通过合理配置参数,你可以根据特定需求处理缺失值的情况。