将Pandas的check_value函数迁移至PySpark实现
PySpark版空白字符占比与空值统计函数实现
以下是对应Pandas版本功能的PySpark实现,针对Spark DataFrame完成各列空白字符占比及空值数量统计:
from pyspark.sql import functions as F def check_value_spark(df): total_count = df.count() result_list = [] for col_name in df.columns: # 统计当前列的空值数量 null_count = df.select(F.count(F.when(F.isnull(col_name), 1))).collect()[0][0] # 统计当前列全空白字符的记录数 whitespace_count = df.select(F.count(F.when(F.trim(col_name) == "", 1))).collect()[0][0] # 计算空白字符占比(保留两位小数) whitespace_ratio = (whitespace_count / total_count) * 100 if total_count > 0 else 0.0 # 组装结果字符串 result_str = f'Column name: db_transactions/{col_name} has {whitespace_ratio:.2f} % of white_space character and {null_count} null values' result_list.append(result_str) return result_list
关键实现说明:
- 总记录数获取:使用
df.count()替代Pandas的df.shape[0],适配Spark分布式计算特性 - 空值统计:通过
F.isnull()配合count(when(...))实现高效的分布式空值计数,避免逐行遍历 - 空白字符判断:用
F.trim(col_name) == ""等效原逻辑中的str(x).isspace(),覆盖全空格、制表符等空白场景 - 占比计算:增加总记录数为0的边界判断,避免除以0报错,同时用
.2f格式化占比为两位小数
内容的提问来源于stack exchange,提问作者PythonLearner
相关产品推荐
相关产品推荐

