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

使用ydata_profiling时Streamlit无报错崩溃问题求助

问题解决:Streamlit中ydata-profiling报告生成时崩溃

可能原因及对应解决方案

1. 内存资源耗尽

Streamlit运行环境的内存限制通常比Jupyter更严格,当选中的Work_Order对应数据量较大时,生成ydata-profiling报告的过程会占用大量内存,直接导致程序崩溃。

  • 快速验证:先只选单个数据量较小的Work_Order测试,确认是否为内存问题。
  • 优化手段:
    • 进一步精简数据:检查并移除所有非必要字段(除已删除的_id和Object_Detection_Visual外,可排查是否存在其他大体积字段)。
    • 调整ydata-profiling参数减少计算负载:关闭部分耗时的分析模块,示例代码如下:
      profile = ProfileReport(
          df,
          title="Work Orders Data Profile",
          minimal=True,
          correlations={"auto": {"calculate": False}},
          interactions={"calculate": False},
          missing_diagrams={"heatmap": False, "dendrogram": False}
      )
      

2. 版本兼容性冲突

当前使用的streamlit-pandas-profiling:0.1.3版本较旧,与最新的ydata-profiling:4.9.0可能存在兼容性问题。

  • 解决步骤:
    • 升级streamlit-pandas-profiling至最新稳定版:
      pip install --upgrade streamlit-pandas-profiling
      
    • 若升级后仍崩溃,尝试降低ydata-profiling版本到兼容性更稳定的4.5.x系列:
      pip install ydata-profiling==4.5.1
      

3. 特殊数据类型干扰

MongoDB返回的数据可能包含嵌套文档、二进制等特殊类型,这类数据在Jupyter中可正常处理,但在Streamlit环境下会触发报告生成失败。

  • 排查与修复:
    • 先打印数据类型排查异常列:
      st.write(df.dtypes)
      
    • 将非标准类型转为字符串或直接排除:
      # 遍历列,把嵌套字典等对象转为字符串
      for col in df.columns:
          if df[col].dtype == 'object' and any(isinstance(x, dict) for x in df[col]):
              df[col] = df[col].astype(str)
      

4. Streamlit运行参数限制

Windows环境下Streamlit默认服务器可能存在资源限制,可通过调整运行参数缓解:

  • 启动命令调整:
    • 以调试模式启动,便于捕获隐藏报错:
      streamlit run your_app.py --debug
      
    • 增大内存相关限制:
      streamlit run your_app.py --server.maxUploadSize 1024 --server.headless true
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:52:06