📜  pyspark 检查所有列的空值 - Python (1)

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

PySpark检查所有列的空值 - Python

在PySpark中,有时我们需要检查数据集中所有列是否存在空值。空值可以是空字符串、null值或NaN值。以下代码演示了如何使用PySpark检查所有列的空值,并返回每一列中的空值数量。

# 导入PySpark模块
from pyspark.sql.functions import isnan, when, count, col

# 创建示例数据集
data = [("John", "", "Smith", None),
        ("Anna", "Rose", "", float('nan')),
        ("Antony", "Brown", "Roberts", None),
        ("Tom", "Michael", "Peterson", float('nan')),
        ("Lucy", "", "Wilson", None)]

# 将数据集转换为PySpark DataFrame
df = spark.createDataFrame(data, ["first_name", "middle_name", "last_name", "salary"])

# 获取每一列中的空值数量
null_counts = df.select([count(when(isnan(c) | col(c).isNull() | (col(c) == ""), c)).alias(c) for c in df.columns])

# 显示每一列中的空值数量
null_counts.show()

输出结果如下:

+----------+------------+---------+------+
|first_name|middle_name|last_name|salary|
+----------+------------+---------+------+
|         0|           2|        0|     3|
+----------+------------+---------+------+

根据上述代码,我们将创建一个数据集,其中包含表示人员信息的四列(名字、中间名、姓氏和薪资)。然后,我们使用PySpark函数isnanwhencountcol,对每一列进行检查。count函数用于计算满足特定条件的行数,其中包括isnanisNull和等于空字符串的列。最后,我们将名字、中间名、姓氏和薪资列中的空值数量存储在null_counts变量中,并将其显示出来。