如何用Python的pandas库删除表的列中有缺失值的行数据

题目

DataFrame students
+-------------+--------+
| Column Name | Type   |
+-------------+--------+
| student_id  | int    |
| name        | object |
| age         | int    |
+-------------+--------+

name 列里有一些具有缺失值的行。

编写一个解决方案,删除具有缺失值的行。

返回结果格式如下示例所示。

示例 1:

输入:
+------------+---------+-----+
| student_id | name    | age |
+------------+---------+-----+
| 32         | Piper   | 5   |
| 217        | None    | 19  |
| 779        | Georgia | 20  |
| 849        | Willow  | 14  |
+------------+---------+-----+
输出:
+------------+---------+-----+
| student_id | name    | age |
+------------+---------+-----+
| 32         | Piper   | 5   |
| 779        | Georgia | 20  | 
| 849        | Willow  | 14  | 
+------------+---------+-----+
解释:
学号为 217 的学生所在行在 name 列中有空值,因此这一行将被删除。

解题方案

1、审题,理解题意

题目的意思是学生信息的 pandas DataFrame 中name 列中有一些行缺少值(None 或 NaN),有丢失的数据。想要把缺失数据的行数据删除掉。

要解决这个问题,可以使用 pandas 的 dropna 函数从 DataFrame 中删除那些缺少名称的行。

dropna 函数定义:

dropna 函数: dropna 函数属于 pandas DataFrame 并且被用来移除缺失的值。在 pandas 中,缺失的数据通常由 NaN(非数字的缩写)值表示,题目中显示为 None,也被 pandas 认为是缺失值。

dropna 函数参数定义:

axis: 它可以是 {0 or ‘index’, 1 or ‘columns’}。默认为 0。如果 axis=0,则丢弃包含缺失值的行;如果 axis=1,则丢弃包含缺失值的列。
how: 确定当我们至少有一个 NA 或全部 NA 时,是否从 DataFrame 中删除行或列。
how=‘any’: 如果存在任何 NA 值,则删除该行或列(默认)。
how=‘all’: 如果所有值都为 NA,则删除该行或列。
thresh: 需要多少非 NA 值。这是一个整型参数,需要最小数量的非 NA 值才能保留行/列。
subset: 要考虑的另一个轴上的标签,例如,如果您正在删除行,则这些标签将是要包括的列的列表。当您只想考虑某些列中的 NA 值时,这特别有用。
inplace: 这是一个布尔值,如果是 True,则对 DataFrame 本身进行更改。请记住,在使用 inplace=True 参数时,您修改的是原始的 DataFrame。如果出于任何原因需要保留原始数据,请避免使用 inplace=True,而是将结果赋给新的 DataFrame。

2、解题思路

对于题目我们只考虑 name 列,所以我们设置了 subset=[‘name’]。students.dropna(subset=[‘name’], inplace=True) ,该参数告诉 dropna 在查找缺失值时只考虑 name 列。也就是说只有 name 列缺少值的行才会被删除。我们需要修改原始的 DataFrame,所以设置 inplace=True。通过将 inplace 设置为 True,我们直接修改了原来的 students DataFrame。如果设置为 False(或省略),则会返回包含删除行的新 DataFrame,而原来的 students DataFrame 将保持不变。

3、代码实现

import pandas as pd

def dropMissingData(students: pd.DataFrame) -> pd.DataFrame:
    students.dropna(subset=['name'], inplace=True)
    return students

4、执行结果

image-20231025084602289

return students

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧阳敏敏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值