看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 的 dropna() 方法用于删除 DataFrame 或 Series 中包含缺失值(NaN)的行或列。
在默认情况下,dropna() 方法删除包含任何缺失值的行。可以通过指定 axis 参数来选择删除行(axis=0)还是列(axis=1)。dropna() 方法还可以根据一些规则来控制缺失值的删除。比如,可以通过指定 thresh 参数来删除包含指定数量及以上缺失值的行或列。可以通过指定 subset 参数来只在指定的列中搜索缺失值并删除相应的行或列。可以通过指定 how 参数来控制只删除全为缺失值的行或列还是只删除部分为缺失值的行或列。
在数据分析中,删除缺失值的情况通常有以下几种:
需要注意的是,删除缺失值可能会导致数据量的减少,进而影响数据分析的准确性和可信度,因此在删除缺失值时需要谨慎权衡。同时,不同的数据集和分析任务也会有不同的处理方法,需要结合具体情况进行处理。
DataFrame 的 dropna() 方法将满足条件的整行和整列的数据。语法为:
DataFrame.dropna(
self,
*,
axis: Axis = 0,
how: AnyAll | NoDefault = no_default,
thresh: int | NoDefault = no_default,
subset: IndexLabel = None,
inplace: bool = False,
ignore_index: bool = False,
) -> DataFrame | None
参数:
返回从中删除 NA 项的 DataFrame,如果 inplace=True,则为 None。
例如:
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
"toy": [np.nan, 'Batmobile', 'Bullwhip'],
"born": [pd.NaT, pd.Timestamp("1940-04-25"),
pd.NaT]})
df
name toy born
0 Alfred NaN NaT
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
删除至少缺少一个元素的行。
>>> df.dropna()
name toy born
1 Batman Batmobile 1940-04-25
删除至少缺少一个元素的列。
>>> df.dropna(axis='columns')
name
0 Alfred
1 Batman
2 Catwoman
删除缺少所有元素的行。
>>> df.dropna(how='all')
name toy born
0 Alfred NaN NaT
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
仅保留具有至少2个非NA值的行。
>>> df.dropna(thresh=2)
name toy born
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
定义要在哪些列中查找缺少的值。
>>> df.dropna(subset=['name', 'toy'])
name toy born
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
Series 的 dropna() 方法的语法为:
Series.dropna(
self, axis: Axis = 0,
inplace: bool = False,
how: str | None = None
) -> Series | None:
参数意义为:
因此,实际使用中 Series 只需要根据需要传入一个 inplace 就可以,并且只能用关键字形式传入。
示例如下。先构造数据:
ser = pd.Series([1., 2., np.nan])
ser
'''
0 1.0
1 2.0
2 NaN
dtype: float64
'''
从序列中删除NA值。
ser.dropna()
'''
0 1.0
1 2.0
dtype: float64
'''
修改原变量中 Series 的内容。
ser.dropna(inplace=True)
ser
'''
0 1.0
1 2.0
dtype: float64
'''
空字符串不被视为NA值。None 被视为 NA 值。
ser = pd.Series([np.NaN, 2, pd.NaT, '', None, 'I stay'])
ser
'''
0 NaN
1 2
2 NaT
3
4 None
5 I stay
dtype: object
'''
ser.dropna()
'''
1 2
3
5 I stay
dtype: object
'''
Index 对象的语法是:
Index.dropna(how='any')
返回不带NA/NaN值的索引。如果“索引”是“多索引”,则在任何或所有级别为NaN时删除该值。
支持 dropna() 方法的对象包括:
更新时间:2023-03-10 22:02:44 标签:pandas python 缺失值 删除