📅  最后修改于: 2023-12-03 15:23:15.728000             🧑  作者: Mango
PySpark 是 Spark 的 Python API,用于处理大规模数据处理任务。在数据处理过程中,经常需要清洗数据,将缺失值或不合法值剔除。在 PySpark 中,可以使用 dropna
方法来实现数据清理操作。
首先,我们需要读取数据。假设我们有一个 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
表示自动推断数据类型。
接下来,我们可以使用 dropna
方法来清理数据。dropna
方法用于删除数据集中具有缺失值的行或列。默认情况下,dropna
方法会删除所有包含缺失值的行。
df_cleaned = df.dropna()
上述代码中,dropna
方法返回一个新的 DataFrame 对象,其中不包含任何缺失值。
如果我们只想删除某些列中包含缺失值的行,可以指定 subset
参数:
df_cleaned = df.dropna(subset=["name"])
上述代码中,subset=["name"]
表示只删除 name
列中包含缺失值的行。
最后,我们可以将清理后的结果输出:
df_cleaned.show()
输出结果:
+---+----+---+
| id|name|age|
+---+----+---+
| 1|John| 24|
| 4|Lisa| 30|
+---+----+---+
在 PySpark 中,可以使用 dropna
方法清理数据。通过指定 subset
参数,可以删除特定列中包含缺失值的行。清理后的结果可通过 show
方法输出。