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()' 是数据分析师和科学家发明的一种处理缺失值的方法。这有助于提高数据集的可靠性。其结果可以提高分析的准确性并带来丰硕的成果。
|