📜  在 Pyspark 中使用 dropna 清理数据(1)

📅  最后修改于: 2023-12-03 15:23:15.728000             🧑  作者: Mango

在 PySpark 中使用 dropna 清理数据

PySpark 是 Spark 的 Python API,用于处理大规模数据处理任务。在数据处理过程中,经常需要清洗数据,将缺失值或不合法值剔除。在 PySpark 中,可以使用 dropna 方法来实现数据清理操作。

1. 读取数据

首先,我们需要读取数据。假设我们有一个 CSV 文件,文件名为 data.csv,包含以下数据:

id,name,age
1,John,24
2,,25
3,Michael,
4,Lisa,30

我们可以使用 pyspark.sql.SparkSession 创建一个 SparkSession 对象,然后使用 read.csv 方法读取 CSV 文件:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("DataCleaning").getOrCreate()

df = spark.read.csv("data.csv", header=True, inferSchema=True)

上述代码中,header=True 表示第一行为列名,inferSchema=True 表示自动推断数据类型。

2. 清理数据

接下来,我们可以使用 dropna 方法来清理数据。dropna 方法用于删除数据集中具有缺失值的行或列。默认情况下,dropna 方法会删除所有包含缺失值的行。

df_cleaned = df.dropna()

上述代码中,dropna 方法返回一个新的 DataFrame 对象,其中不包含任何缺失值。

如果我们只想删除某些列中包含缺失值的行,可以指定 subset 参数:

df_cleaned = df.dropna(subset=["name"])

上述代码中,subset=["name"] 表示只删除 name 列中包含缺失值的行。

3. 结果输出

最后,我们可以将清理后的结果输出:

df_cleaned.show()

输出结果:

+---+----+---+
| id|name|age|
+---+----+---+
|  1|John| 24|
|  4|Lisa| 30|
+---+----+---+
总结

在 PySpark 中,可以使用 dropna 方法清理数据。通过指定 subset 参数,可以删除特定列中包含缺失值的行。清理后的结果可通过 show 方法输出。