如何使用pandas删除数据表中的缺失值?

在数据分析和处理中,经常会遇到数据缺失的情况。数据缺失是常见的数据质量问题之一,因为缺失的数据可能会导致结果的偏差或不准确。Pandas是一个用于数据处理和分析的Python库,它提供了一些有用的函数来处理数据中的缺失值。本文将介绍如何使用pandas删除数据表中的缺失值。

一、选取含缺失值的数据表

在开始之前,我们需要一个含缺失值的数据表来进行调试和演示。下面是一个包含缺失值的数据表:


import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
        'age': [25, 20, np.nan, 30, 35],
        'gender': ['F', 'M', np.nan, 'M', 'F'],
        'score': [80, 75, 85, 90, np.nan]}
df = pd.DataFrame(data)
print(df)

运行以上代码会输出以下结果:


       name   age gender  score
0     Alice  25.0      F   80.0
1       Bob  20.0      M   75.0
2   Charlie   NaN    NaN   85.0
3     David  30.0      M   90.0
4      Ella  35.0      F    NaN

可以看到,数据表中共有4个缺失值。下面我们将介绍如何使用Pandas来删除这些缺失值。

二、删除缺失值

1. 删除有缺失值的行或列

在 pandas 中,最简单的删除缺失值的方法是简单地将缺失值所在的行或列删除。可以使用 dropna() 函数来实现。默认情况下,dropna() 函数会删除任何包含缺失值的行。


# 删除含有缺失值的行
df1 = df.dropna()
# 删除含有缺失值的列
df2 = df.dropna(axis=1)

其中,参数 axis=1 表示删除含有缺失值的列。

删除行操作的结果:


     name   age gender  score
0   Alice  25.0      F   80.0
1     Bob  20.0      M   75.0
3   David  30.0      M   90.0

删除列操作的结果:


      name
0    Alice
1      Bob
2  Charlie
3    David
4     Ella

可以看到,行中含有缺失值的全部被删除了。

2. 只删除全部为缺失值的行或列

除了删除含有缺失值的行或列之外,Pandas 还提供了一种方法可以只删除全部为缺失值的行或列。可以使用 dropna() 函数的参数 how='all' 来实现。如果使用了这个参数,dropna() 函数只会删除全部为缺失值的行或列。


# 删除全部为缺失值的行
df3 = df.dropna(how='all')
# 删除全部为缺失值的列
df4 = df.dropna(axis=1, how='all')

删除行操作的结果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
2  Charlie   NaN    NaN   85.0
3    David  30.0      M   90.0
4     Ella  35.0      F    NaN

删除列操作的结果:


       name   age gender  score
0     Alice  25.0      F   80.0
1       Bob  20.0      M   75.0
2   Charlie   NaN    NaN   85.0
3     David  30.0      M   90.0
4      Ella  35.0      F    NaN

可以看到,在行和列中只删除了全部为缺失值的那一行或列。

3. 删除任意一行或列中包含缺失值的数据

除了只删除全部为缺失值的行或列之外,Pandas 还提供了一种方法可以删除任意一行或列中包含缺失值的数据。可以使用 dropna() 函数的参数 thresh=n 来实现。如果使用了这个参数,dropna() 函数将只保留至少包含 n 个非缺失值的行或列。也就是说,如果某一行或列中缺失值的数量超过了 n-1 个,那么这一行或列也会被删除。


# 删除至少含有 3 个缺失值的行
df5 = df.dropna(thresh=2)
# 删除至少含有 2 个缺失值的列
df6 = df.dropna(axis=1, thresh=4)

删除行操作的结果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
3    David  30.0      M   90.0
4     Ella  35.0      F    NaN

删除列操作的结果:


      name  score
0    Alice   80.0
1      Bob   75.0
2  Charlie   85.0
3    David   90.0
4     Ella    NaN

可以看到,在满足条件的情况下,只删除了含有缺失值的那些行或列。

三、填充缺失值

除了删除缺失值之外,有时候也需要填充缺失值。可以使用 fillna() 函数来实现缺失值的填充。一般来说,可以设置一个值或使用某种算法填充缺失值。

1. 使用一个固定的值填充缺失值

最简单的填充方法是使用一个固定的值来填充所有的缺失值。可以使用 fillna() 函数,并传入一个指定的数字或字符串。


# 使用固定值来填充缺失值
df7 = df.fillna(0)

填充操作的结果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
2  Charlie   0.0      0   85.0
3    David  30.0      M   90.0
4     Ella  35.0      F    0.0

可以看到,缺失值都被填充为了指定的数字 0。

2. 使用平均数或中位数填充缺失值

除了使用固定值外,还可以使用一些算法来填充缺失值,例如平均值、中位数、插值等。使用 fillna() 函数的参数来传入指定的算法。


# 使用平均数填充 "age" 列的缺失值
df8 = df.fillna({'age': df['age'].mean()})
# 使用中位数填充 "score" 列的缺失值
df9 = df.fillna({'score': df['score'].median()})

填充操作的结果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
2  Charlie  27.5    NaN   85.0
3    David  30.0      M   90.0
4     Ella  35.0      F   82.5

可以看到,缺失值都被填充为了指定算法所计算得到的结果。

3. 使用插值算法填充缺失值

除了使用平均值和中位数之外,还可以使用插值算法来填充缺失值。插值是一种对数据进行预测的技术,它可以在缺少数据的情况下预测缺失值。Pandas 提供了 interpolate() 函数来进行插值。


# 使用插值算法填充缺失值
df10 = df.interpolate()

填充操作的结果:


      name    age gender  score
0    Alice  25.00      F  80.00
1      Bob  20.00      M  75.00
2  Charlie  23.33    NaN  85.00
3    David  30.00      M  90.00
4     Ella  35.00      F  87.50

可以看到,在使用插值算法填充之后,缺失值的分布更加接近真实值。

四、总结

本文介绍了如何使用 Pandas 删除数据表中的缺失值。我们讨论了三种删除缺失值的方法:删除行和列、删除全部为缺失值的行和列、删除任意一行或列中包含缺失值的数据。我们还介绍了如何填充缺失值,包括使用固定值、平均数、中位数和插值算法来填充缺失值。这些方法可以帮助我们更好地处理数据缺失问题。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/197603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-03 20:04
下一篇 2024-12-03 20:05

相关推荐

  • 如何使用Python获取某一行

    您可能经常会遇到需要处理文本文件数据的情况,在这种情况下,我们需要从文本文件中获取特定一行的数据并对其进行处理。Python提供了许多方法来读取和处理文本文件中的数据,而在本文中,…

    编程 2025-04-29
  • 如何使用jumpserver调用远程桌面

    本文将介绍如何使用jumpserver实现远程桌面功能 一、安装jumpserver 首先我们需要安装并配置jumpserver。 $ wget -O /etc/yum.repos…

    编程 2025-04-29
  • Hibernate注解联合主键 如何使用

    解答:Hibernate的注解方式可以用来定义联合主键,使用@Embeddable和@EmbeddedId注解。 一、@Embeddable和@EmbeddedId注解 在Hibe…

    编程 2025-04-29
  • 如何使用Python读取CSV数据

    在数据分析、数据挖掘和机器学习等领域,CSV文件是一种非常常见的文件格式。Python作为一种广泛使用的编程语言,也提供了方便易用的CSV读取库。本文将介绍如何使用Python读取…

    编程 2025-04-29
  • 如何使用HTML修改layui内部样式影响全局

    如果您想要使用layui来构建一个美观的网站或应用,您可能需要使用一些自定义CSS来修改layui内部组件的样式。然而,修改layui组件的样式可能会对整个页面产生影响,甚至可能破…

    编程 2025-04-29
  • 如何使用random生成不重复的随机数

    在编程开发中,我们经常需要使用随机数来模拟一些场景或生成一些数据。但是如果随机数重复,就会造成数据的不准确性。这时我们就需要使用random库来生成不重复且随机的数值。下面将从几个…

    编程 2025-04-29
  • 如何使用GPU加速运行Python程序——以CSDN为中心

    GPU的强大性能是众所周知的。而随着深度学习和机器学习的发展,越来越多的Python开发者将GPU应用于深度学习模型的训练过程中,提高了模型训练效率。在本文中,我们将介绍如何使用G…

    编程 2025-04-29
  • 如何使用Python导入Random库

    Python是一门优秀的编程语言,它拥有丰富的第三方库和模块。其中,Random库可谓是最常用的库之一,它提供了用于生成随机数的功能。对于开发人员而言,使用Random库能够提高开…

    编程 2025-04-29
  • 理解agentmain方法如何使用

    如果你不清楚如何使用agentmain方法,那么这篇文章将会为你提供全面的指导。 一、什么是agentmain方法 在Java SE 5.0中,Java提供了一个机制,允许程序员在…

    编程 2025-04-29
  • 如何使用Python将print输出到界面?

    在Python中,print是最常用的调试技巧之一。在编写代码时,您可能需要在屏幕上输出一些值、字符串或结果,以便您可以更好地理解并调试代码。因此,在Python中将print输出…

    编程 2025-04-29

发表回复

登录后才能评论