前言
在 pandas 中,dataframe.dropna()
用于删除缺失值(nan 或 none),是数据清洗的关键操作。以下是详细用法和常见场景:
1. 基本语法
cleaned_df = df.dropna( axis=0, # 删除行(默认)或列(axis=1) how='any', # 'any'(默认,存在缺失即删除)或 'all'(全为缺失才删除) thresh=none, # 保留非缺失值数量≥thresh的行/列 subset=none, # 仅检查指定列的缺失情况 inplace=false # 是否原地修改(false时返回新dataframe) )
2. 核心参数详解
参数 | 说明 | 示例 |
---|---|---|
axis | 0 或 'index' :删除包含缺失值的行(默认)1 或 'columns' :删除列 | df.dropna(axis=1) |
how | 'any' :行/列中任一缺失即删除'all' :行/列全部缺失才删除 | df.dropna(how='all') |
thresh | 保留至少含 thresh 个非缺失值的行/列(优先级高于 how ) | df.dropna(thresh=3) |
subset | 仅对指定列(列表形式)检查缺失值 | df.dropna(subset=['age', 'salary']) |
inplace | true :直接修改原dataframe,不返回新对象false :返回新dataframe(默认) | df.dropna(inplace=true) |
3. 常见使用场景
(1) 删除所有含缺失值的行(默认行为)
import pandas as pd import numpy as np df = pd.dataframe({ 'a': [1, np.nan, 3], 'b': ['x', np.nan, 'z'], 'c': [10, 20, 30] }) cleaned_df = df.dropna() print(cleaned_df)
输出:
a b c
0 1.0 x 10
2 3.0 z 30
(2) 删除所有含缺失值的列
cleaned_df = df.dropna(axis=1) print(cleaned_df)
输出:
c
0 10
1 20
2 30
(3) 仅当整行全为缺失值时删除
cleaned_df = df.dropna(how='all')
(4) 保留至少2个非缺失值的行
cleaned_df = df.dropna(thresh=2)
(5) 仅检查特定列的缺失值
cleaned_df = df.dropna(subset=['a', 'b'])
4. 注意事项
- 缺失值类型:pandas 将
none
和np.nan
均视为缺失值。 - 性能优化:对大型dataframe,
thresh
比how
更高效。 - 替代方案:若不想删除数据,可用
df.fillna()
填充缺失值。
5. 可视化对比
原始数据 (df
):
a | b | c |
---|---|---|
1.0 | ‘x’ | 10 |
nan | nan | 20 |
3.0 | ‘z’ | 30 |
执行 df.dropna()
后:
a | b | c |
---|---|---|
1.0 | ‘x’ | 10 |
3.0 | ‘z’ | 30 |
通过灵活组合参数,dropna()
可以精准控制数据清洗的粒度,是处理缺失值的利器!
总结
到此这篇关于python pandas中dataframe.dropna()删除缺失值用法的文章就介绍到这了,更多相关pandas dataframe.dropna()删除缺失值内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论