Python中的pandas.dataframe.ffill()

2025年1月5日 | 阅读6分钟

引言

数据处理和计算机编码与数据科学及其他分析方法论密不可分。随着 Python 库数量的不断增长,这种语言为数据处理等任务提供了强大的武器库,而这些任务传统上是 Pandas 的基准。Panda 是一个非常灵活的包,提供了许多有用的数据操作函数和方法,例如 DataFrame.ffill(),它是替换缺失值的几种有用方法之一。在本文中,我们将深入探讨 Pandas 中 'ffill()' 方法的复杂性,并通过示例学习如何在实际问题中使用它们。

什么是 DataFrame.ffill() 方法()?

Pandas DataFrame 中的 'ffill()' 方法用于向前填充空值。它代表一种“前向填充”操作,即将列中最后一个预测的非缺失值复制到下面的剩余单元格。这种方法最适合时间序列或顺序数据,其中缺失值可能由多种原因引起,例如传感器出现故障、数据收集困难或仅偶尔可用。

语法

  • axis:axis 指定要填充缺失值的空值所在的轴。除非另有指示,否则它通常从中心开始(axis=0/沿行填充)。
  • inplace:如果为 True,则就地修改 DataFrame,不返回任何内容。如果返回的 DataFrame 类型为 False(默认),则现有 DataFrame 将替换缺失值。
  • limit:限制连续 NaN 值填充的数量。如果提供了此参数,则前向填充将在填充指定数量的 NaN 值后停止。

理解前向填充

在 ffill() 方法中,在我们深入研究之前,让我们用一个简单的图表来理解填充前向的概念。假设我们有一个包含缺失值的 DataFrame 如下:

示例

输出

     A    B
0  1.0  NaN
1  NaN  2.0
2  3.0  NaN
3  NaN  4.0
4  5.0  5.0

说明

  • 代码通过“pd”导入 Pandas 库,通过“np”导入 NumPy 库。
  • 它构建了一个字典,其中包含“data”作为键,值为 A 和 B 作为键,它们都映射到包含数值和 NaN 的列表。
  • 为此,该字典用于创建一个名为 'df' 的 Pandas DataFrame,其中包含两列(“A”和“B”)。
  • 第一列“A”中的值是 [1 到 5]。如果您遇到任何问题或对我们的专业员工有任何疑问,请随时寻求帮助。
  • B 列中的值 [NaN, 2, NaN, 4, 5] 位于 B 列中。
  • N/A 值是指 DataFrame 中不存在或未定义的那些值。

现在我们将 ffill() 方法应用于上述 DataFrame。

输出

Before Appling ffill Method
     A    B
0  1.0  NaN
1  NaN  2.0
2  3.0  NaN
3  NaN  4.0
4  5.0  5.0
After Appling ffill Method
     A    B
0  1.0  NaN
1  1.0  2.0
2  3.0  2.0
3  3.0  4.0
4  5.0  5.0

说明

  • 代码开始于一个导入语句,该语句将 NumPy Python 库导入为“np”,并将 Pandas 数据分析 Python 库导入为“pd”。
  • 这些行初始化一个空字典“data”,其中包含两个键(“A”和“B”),每个键都链接到一个包含数值数据和 NaN(表示缺失值)的值。
  • 利用字典,它形成了具有两列(A 和 B)的“df”Pandas DataFrame。
  • 首先,该方法删除“dtype”对象。然后,该方法通过打印“df”来显示 df 内容,以提示任何描述。
  • 下一行是“ffill()”方法,代码将其应用于 DataFrame“df”,使列中的缺失值向前移动。
  • 该方法应用于数据集,并使用打印语句显示 df_ffilled DataFrame,其中前向填充是用于填充缺失值的方法。
  • 此代码块说明了在 Pandas DataFrame 上使用“ffill()` 方法填充 DataFrame 中缺失数据的最简单示例。

下一节,让我们探索 dataframe.ffill() 方法的实际示例。

实际示例

现在,让我们来研究“fill()”函数在真实数据集背景下的实际应用。

示例 1:时间序列数据

在数据缺失的情况下,取时间序列数据集的缺失数据。让我们创建一个表示每日温度读数的示例 DataFrame。

示例

输出

                   Temperature
2024-01-01         20.5
2024-01-02          NaN
2024-01-03         22.3
2024-01-04          NaN
2024-01-05         19.8

说明

  • 此代码片段演示了创建 Pandas DataFrame 来表示时间序列数据。
  • Pandas 库以“pd”导入,NumPy 以“np”导入。
  • 然后通过将“pd.date_range()”函数应用于“dates”变量,将它们转换为以下日期:“2024-01-01”到“2024-12-31”,共 5 个周期。
  • 创建了一个名为“data”的字典,其中包含“Temperature”作为键,映射到一个仅包含一些数字的列表,稍后会再次用到。
  • 通过“data”存档和“dates”索引,可以创建一个名为 'ts_df' 的 Pandas DataFrame 来描述时间序列数据,其中“Temperature”作为列标题。
  • 输出打印了名为 'ts_df' 的 DataFrame,以展示时间序列数据。此处,以图形方式显示了温度值和相关日期。此处使用了表示缺失值的特定符号 “NaN”

示例 2:金融数据

例如,一家公司拥有一系列每日股票价格。我们将创建一个包含缺失值的示例 DataFrame 来模拟这种情况。

输出

 Stock_Price
2024-01-01        100.0
2024-01-02          NaN
2024-01-03        102.5
2024-01-04          NaN
2024-01-05         99.8

说明

  • 代码以导入语句开始,该语句同时包含 Pandas 和 NumPy 库,分别缩写为“pd”和“np”。
  • 它建议使用“pd.date_range()”函数从“2024-01-01”开始,共 5 个周期,并将所有这些日期分配给一个名为“dates”的变量。
  • 定义了一个名为“data”的字典,其中“Stock_Price”键映射到一个列表,该列表包含数值以及“NaN”,表示无法计算这些值。
  • 通过应用“data”和“dates”,我们可以构建一个 Pandas DataFrame,称为 'stock_df',它表示股票价格随时间变化的趋势,其中“Stock_Price”是列标签。
  • 打印了股票价格(DataFrame)“stock_df”及其对应的日期,其中空位标记为“NaN”。

现在,我们将 ffill() 方法应用于上述示例。

输出

 Stock_Price
2024-01-01        100.0
2024-01-02          NaN
2024-01-03        102.5
2024-01-04          NaN
2024-01-05         99.8
After Applying ffill() method to stock price:
            Stock_Price
2024-01-01        100.0
2024-01-02        100.0
2024-01-03        102.5
2024-01-04        102.5
2024-01-05         99.8

说明

  • 此代码片段演示了将“ffill()”方法应用于 DataFrame 以前向填充缺失值。
  • 使用“pd.date_range()”,它将“2024-01-01”作为起始日期,共 5 个周期,生成一系列日期并将其分配给“dates”。
  • 字典有一个名为“data”的定义和一个名为“Stock_Price”的键。它由一个包含所有数值和“NaN”的列表支持,用于存放缺失数据。
  • 通过对“data”和“days”的理解,生成了一个名为“stock_df”的 DataFrame,它表示股票价格随时间的推移,其中“Stock_Price”是列标题。
  • 原始 DataFrame 'stock_df' 显示了股票价格和观察日期,以及那些缺失并标记为 'NaN' 的值。
  • ffill() 方法可以填充 DataFrame stock_df 中的向后缺失项,并将最终结果 stock_df_ffilled DataFrame 存储起来以备将来使用。
  • 下面是 stock_df_ffilled 的打印输出,它是一个已填充的 DataFrame,其中股票价格的缺失值已通过前向填充方法填充。

结论

在本文中,我们讨论了 Pandas DataFrame 中的“ffill()”方法,它是一个强大的工具,用于使用同一列中连续位置的值来填充顺序间隙(值已知)。到目前为止,我们已经讨论了它的语法,并采用了时间序列和金融数据来采样严肃的实际实例,以揭示其在预处理信息中的重要性。 'ffill()' 是数据分析师和科学家发明的一种处理缺失值的方法。这有助于提高数据集的可靠性。其结果可以提高分析的准确性并带来丰硕的成果。