pandas.dropna()的thresh参数到底怎么用?

景韦 2019-02-23 09:33:31
网上各种说法都有,保留n个具有NaN值的行,保留NaN数量是n的行,保留NaN数量最少的n行等等
官方文档里写得也很含糊
我自己也试了半天,没找到什么规律,有谁能解释下吗?

In [6]: data
Out[6]:
0 1 2 3 4
0 32 38.0 11.0 69.0 34
1 59 NaN NaN NaN 62
2 14 79.0 NaN NaN 78
3 77 76.0 17.0 NaN 89
4 6 40.0 53.0 60.0 70

In [7]: data.dropna(thresh=1)
Out[7]:
0 1 2 3 4
0 32 38.0 11.0 69.0 34
1 59 NaN NaN NaN 62
2 14 79.0 NaN NaN 78
3 77 76.0 17.0 NaN 89
4 6 40.0 53.0 60.0 70

In [8]: data.dropna(thresh=2)
Out[8]:
0 1 2 3 4
0 32 38.0 11.0 69.0 34
1 59 NaN NaN NaN 62
2 14 79.0 NaN NaN 78
3 77 76.0 17.0 NaN 89
4 6 40.0 53.0 60.0 70

In [9]: data.dropna(thresh=3)
Out[9]:
0 1 2 3 4
0 32 38.0 11.0 69.0 34
2 14 79.0 NaN NaN 78
3 77 76.0 17.0 NaN 89
4 6 40.0 53.0 60.0 70
...全文
1029 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nrb123 2019-08-01
  • 打赏
  • 举报
回复
太强了,亲试,确实如此
景韦 2019-02-23
  • 打赏
  • 举报
回复 2
又自己解决了,在stackoverflow找到了答案,国内博客论坛真不给力了,都是各种误导 应该是保留至少有n个非NaN数据的行/列 例子里0,1,2,3,4行的非NaN数据数量分别是5,2,3,4,5,因此thresh=1和2都满足 但thresh=3的时候1行非NaN数据数量不满足,因此丢弃了1行数据
zyq_sunny 2022-01-10
  • 举报
回复
@景韦 后面是不是需要加上inplace = True, 不然结果修改不了哈
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在数据分析中,处理缺失数据是关键步骤之一,而Pandas库的pd.dropna()方法为此提供了强大支持。本文将通过示例详细讲解该方法的使用。 首先,我们需要创建一个包含缺失值的DataFrame用于演示。以下是代码示例: 运行后,可得到一个带有缺失值的DataFrame。 接下来,我们介绍pd.dropna()方法的基本用法。其语法为: axis:0表示按行操作,1表示按列操作。 how:默认为"any",表示只要有缺失值就删除;若为"all",则只有当整行(列)都是缺失值时才删除。 thresh:指定每行(列)至少需要的非空值数量,否则删除。 subset:列表形式,指定只考虑这些列中的缺失值。 inplace:若为True,则直接修改原DataFrame,否则返回新的DataFrame。 以下是具体的示例应用。 删除包含任何缺失值的行: 输出结果中仅保留了没有缺失值的行。 删除所有值均为缺失值的行: 由于原数据中没有完全缺失的行,因此输出与原始DataFrame一致。 设置阈值删除行: 只有满足非空值数量要求的行才会被保留。 删除特定列中的缺失值: 只有当指定列中存在缺失值时才会删除对应的行。 原地删除缺失值: 直接修改原DataFrame,删除所有包含缺失值的行。 通过这些示例,我们可以看到pd.dropna()方法在处理缺失数据时的灵活性和高效性。根据实际需求合理配置参数,能够有效提升数据清洗的效率和质量,帮助我们更好地进行数据分析。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧