Упреждающее заполнение отсутствующих значений в PySpark: методы прямого заполнения в Apache Spark

В PySpark прямое заполнение — это процесс заполнения отсутствующих значений в столбце предыдущим ненулевым значением. Существует несколько методов, которые можно использовать для пересылки данных заполнения в PySpark. Вот некоторые из них:

  1. Использование объекта na: DataFrame PySpark предоставляет объект na, который позволяет обрабатывать недостающие данные. Вы можете использовать метод fillna()с параметром «ffill» для переадресации заполнения недостающих значений в определенном столбце. Вот пример:

    from pyspark.sql import SparkSession
    spark = SparkSession.builder.getOrCreate()
    df = spark.createDataFrame([(1, None), (2, 10), (3, None), (4, 20)], ["id", "value"])
    df_filled = df.na.fill("ffill", subset=["value"])
    df_filled.show()
  2. Использование функции Window: функцию WindowPySpark в сочетании с lag()можно использовать для заполнения пропущенных значений предыдущими значениями. ненулевое значение. Вот пример:

    from pyspark.sql import SparkSession
    from pyspark.sql.functions import col, lag
    from pyspark.sql.window import Window
    spark = SparkSession.builder.getOrCreate()
    df = spark.createDataFrame([(1, None), (2, 10), (3, None), (4, 20)], ["id", "value"])
    window = Window.orderBy("id").rowsBetween(Window.unboundedPreceding, 0)
    df_filled = df.withColumn("filled_value", lag("value").over(window))
    df_filled.show()
  3. Использование функции forward_fillиз библиотеки pyspark_dist_explore: эта библиотека предоставляет дополнительные функции исследовательского анализа данных, включая метод прямого заполнения. Вы можете установить его с помощью pip install pyspark_dist_exploreи использовать его следующим образом:

    from pyspark.sql import SparkSession
    from pyspark_dist_explore import forward_fill
    spark = SparkSession.builder.getOrCreate()
    df = spark.createDataFrame([(1, None), (2, 10), (3, None), (4, 20)], ["id", "value"])
    df_filled = forward_fill(df, ["value"], ["id"])
    df_filled.show()