PySpark如何统计含多词的DataFrame列的词频?
PySpark实现关键词频次统计
实现步骤与代码
先创建测试用的DataFrame(模拟你提供的数据源):
from pyspark.sql import SparkSession from pyspark.sql.functions import split, explode, lower, count, col # 初始化SparkSession spark = SparkSession.builder.appName("KeywordCount").getOrCreate() # 创建测试数据 data = [(1, "Mary had a little lamb"), (2, "A little lamb is white"), (3, "Mary is little")] df = spark.createDataFrame(data, ["Number", "Keywords"])
接下来执行关键词统计:
# 1. 拆分关键词列并展开为单行单关键词,同时统一转为小写 df_exploded = df.withColumn("keyword", explode(split(col("Keywords"), " "))) \ .withColumn("keyword", lower(col("keyword"))) # 2. 按关键词分组统计出现次数,再按次数降序、关键词升序排序 result_df = df_exploded.groupBy("keyword") \ .agg(count("*").alias("count")) \ .orderBy(col("count").desc(), col("keyword").asc()) # 查看结果 result_df.show()
关键操作说明
split(col("Keywords"), " "):按空格拆分Keywords列的字符串为数组explode(...):将数组中的每个元素拆分为单独的行,实现一行多关键词到多行单关键词的转换lower(...):统一关键词为小写,避免大小写差异导致统计重复(比如原数据中的"A"和"a"会被合并为"a")groupBy + count:统计每个关键词的出现次数orderBy:按次数从高到低排序,次数相同时按关键词字母顺序排序,匹配你期望的输出顺序
内容的提问来源于stack exchange,提问作者Zane Brown
相关产品推荐
相关产品推荐

