You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jupyter Notebook中循环输出PySpark DataFrame的Pandas格式频数表

解决方法

核心思路

针对大数据集,每列单独用PySpark计算频数,再转为小体量的Pandas DataFrame,然后利用Jupyter的display()函数强制渲染每个表格,避免用print()破坏格式,同时保证内存安全。

具体实现代码

  1. 先写一个工具函数,单独处理单列的频数统计并转成Pandas格式:
from IPython.display import display, Markdown

def get_col_freq(spark_df, col_name):
    # PySpark端计算频数,按计数降序排列
    spark_freq = spark_df.groupBy(col_name).count().orderBy("count", ascending=False)
    # 转为小Pandas表(仅存储该列的唯一值和计数,内存压力小)
    return spark_freq.toPandas()
  1. 遍历列并输出整洁表格:
# 遍历目标列(可替换为指定列列表,如["col1", "col2"])
for col in df.columns:
    # 显示列名作为标题
    display(Markdown(f"#### 列 `{col}` 的频数分布"))
    # 直接渲染Pandas表格,Jupyter会自动输出整洁格式
    display(get_col_freq(df, col))

关键说明

  • 循环显示异常原因:Jupyter默认只展示循环最后一个返回的对象,用display()可强制每个表格都被渲染。
  • 大数据集适配:每列的频数表仅包含该列的唯一值和计数,数据量远小于全量数据集,不会触发内存溢出。
  • Excel复制适配:直接选中Jupyter里渲染好的表格内容,粘贴到Excel会自动识别列和行,无需额外调整格式。

内容的提问来源于stack exchange,提问作者asdcx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:51:01