进一步针对咨询类别内部进行统计分析,统计内容为101网页类型的子类型、记录数及其所占101网页类型总记录百分比
时间: 2024-02-19 17:03:49 浏览: 18
同样地,假设你有一个包含类别、子类型和记录数字段的Spark DataFrame,可以使用以下代码来针对咨询类别内部进行统计分析,统计内容为101网页类型的子类型、记录数及其所占101网页类型总记录百分比:
```python
from pyspark.sql.functions import sum, round
# 假设你的DataFrame名为df
# 先按类别和子类型进行分组,并统计每组的记录数
grouped_df = df.filter(col("类别") == 101).groupBy("子类型").agg(sum("记录数").alias("记录数"))
# 计算每个子类型所占101网页类型总记录百分比
total_count = grouped_df.agg(sum("记录数").alias("总记录数")).collect()[0]["总记录数"]
grouped_df = grouped_df.withColumn("%", round(col("记录数")/total_count*100, 2))
# 按记录数从大到小排序
grouped_df = grouped_df.sort(col("记录数").desc())
# 打印结果
grouped_df.show()
```
其中,`groupBy()`函数用于按列进行分组,`agg()`函数用于进行聚合计算,`sum()`函数用于计算总和,`alias()`函数用于给聚合结果的列命名,`withColumn()`函数用于添加新列,`round()`函数用于对百分比进行四舍五入保留两位小数,`collect()`函数用于将DataFrame转换为Python的列表,`sort()`函数用于按指定列进行排序,`desc()`表示降序排列。