Pandas DataFrame Fillna 方法

Beginner

介绍

在本实验中,你将学习如何在 Pandas 库中使用 fillna() 方法。fillna() 方法允许你用指定的值或使用指定的方法来填充 DataFrame 中的缺失值或 NaN(Not a Number)值。

虚拟机提示

虚拟机启动完成后,点击左上角切换到 Notebook 标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟,直到 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 寻求帮助。实验结束后提供反馈,我们将及时为你解决问题。

导入必要的库

让我们从导入 Pandas 库开始:

import pandas as pd

创建包含缺失值的 DataFrame

接下来,让我们创建一个包含一些缺失值的 DataFrame:

df = pd.DataFrame([[2, pd.nan, 0], [pd.nan, pd.nan, 5], [pd.nan, 3, pd.nan]], columns=list('ABC'))
print("The DataFrame is:")
print(df)

使用指定值填充缺失值

我们可以使用 fillna() 方法将所有缺失值替换为指定的值。例如,让我们将 DataFrame 中的所有缺失值替换为值 2:

print("Filling NaN values:")
print(df.fillna(2))

使用前向填充方法填充缺失值

除了使用单一值填充缺失值外,我们还可以使用前向填充方法(ffill)将非空值向前传播。此方法使用同一列中最后观察到的非空值来填充缺失值。

print("Filling NaN values using forward fill method:")
print(df.fillna(method='ffill'))

沿列方向使用前向填充方法填充缺失值

我们还可以通过将 axis 参数设置为 1,沿列使用前向填充方法。

print("Filling NaN values using forward fill method along the columns:")
print(df.fillna(method='ffill', axis=1))

使用后向填充方法填充缺失值

类似地,我们可以使用后向填充方法(bfill)将非空值向后传播。此方法使用同一列中下一个观察到的非空值来填充缺失值。

print("Filling NaN values using backward fill method:")
print(df.fillna(method='bfill'))

使用指定值替换特定列的缺失值

我们可以用不同的指定值替换特定列的缺失值。例如,让我们将列 'A'、'B'、'C' 和 'D' 中的缺失值分别替换为值 0、1、2 和 3。

print("Filling NaN values in specific columns:")
new_values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}
print(df.fillna(value=new_values))

限制填充的连续 NaN 值的数量

我们还可以使用 limit 参数限制填充的连续 NaN 值的数量。例如,让我们将前向填充限制为仅填充一个连续的 NaN 值。

print("Filling NaN values with a limit:")
print(df.fillna(method='ffill', limit=1))

总结

在本实验中,你学习了如何使用 Pandas 库中的 fillna() 方法来填充 DataFrame 中的缺失值或 NaN 值。你探索了多种填充缺失值的方式,包括使用指定值、前向填充、后向填充以及限制填充的连续 NaN 值的数量。fillna 是处理缺失数据并确保 DataFrame 完整性的一个有用方法。