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

如何将pandas_profiling生成的EDA报告导出为PDF及优化分析?

将 pandas_profiling 报告导出为PDF并优化报告

一、导出HTML报告为PDF的方法

pandas_profiling 本身不直接支持导出PDF,需要借助第三方工具将生成的HTML文件转换为PDF,以下是两种可靠方案:

方案1:使用 pdfkit + wkhtmltopdf

这是最常用的转换方式,依赖wkhtmltopdf工具渲染HTML:

  1. 安装依赖

    • 安装Python库:
      pip install pdfkit
      
    • 安装wkhtmltopdf:
      • Ubuntu/Debian:sudo apt-get install wkhtmltopdf
      • macOS:brew install wkhtmltopdf
      • Windows:下载对应版本安装包,安装后将可执行文件路径添加到系统环境变量。
  2. 转换代码

    from pandas_profiling import ProfileReport
    import pdfkit
    
    # 生成HTML报告(你的原代码)
    profile = ProfileReport(df, title="Raw Dataset Analysis", explorative=True)
    profile.to_file("report.html")
    
    # 转换为PDF
    # Windows下如果环境变量没配置,需指定wkhtmltopdf路径:
    # config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
    # pdfkit.from_file("report.html", "report.pdf", configuration=config)
    pdfkit.from_file("report.html", "report.pdf")
    

方案2:使用 Selenium 模拟浏览器打印

如果wkhtmltopdf渲染样式有问题,用浏览器模拟打印更准确:

  1. 安装依赖

    pip install selenium
    

    下载对应浏览器的驱动(比如ChromeDriver),并添加到系统环境变量。

  2. 转换代码

    from pandas_profiling import ProfileReport
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import os
    
    # 生成HTML报告
    profile = ProfileReport(df, title="Raw Dataset Analysis", explorative=True)
    profile.to_file("report.html")
    
    # 配置Chrome打印PDF
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--no-sandbox')
    # 设置打印参数
    chrome_options.add_experimental_option('prefs', {
        'printing.print_preview_sticky_settings.appState': '{\"recentDestinations\":[{\"id\":\"Save as PDF\",\"origin\":\"local\",\"account\":\"\"}],\"selectedDestinationId\":\"Save as PDF\",\"version\":2}'
    })
    chrome_options.add_argument('--kiosk-printing')
    
    driver = webdriver.Chrome(options=chrome_options)
    driver.get(f'file://{os.path.abspath("report.html")}')
    driver.execute_script('window.print();')
    driver.quit()
    

    运行后PDF会默认保存到浏览器下载目录,可通过修改Chrome配置指定路径。

二、优化 pandas_profiling 报告的技巧

1. 精简报告内容

  • 排除无关列:避免对不需要分析的列生成统计内容
    profile = ProfileReport(df, 
                            title="Raw Dataset Analysis", 
                            explorative=True,
                            variables={"exclude": ["id_col", "timestamp_col"]})  # 替换为你的列名
    
  • 关闭冗余分析模块:比如不需要某些相关性分析或图表
    profile = ProfileReport(df,
                            title="Raw Dataset Analysis",
                            explorative=True,
                            correlations={"pearson": False, "spearman": False},  # 关闭相关性计算
                            missing_diagrams={"heatmap": False})  # 关闭缺失值热力图
    
  • 启用极简模式:适合大数据集,只保留核心分析内容
    profile = ProfileReport(df,
                            title="Raw Dataset Analysis",
                            explorative=True,
                            minimal=True)
    

2. 自定义报告内容

  • 添加自定义章节:插入业务相关的分析说明
    from pandas_profiling.report.presentation.core import HTML
    
    custom_section = HTML("<h2>自定义分析说明</h2><p>这里可以添加数据集的业务背景、预处理说明等内容</p>")
    profile.add_section(section_name="Custom Analysis", section=custom_section)
    
  • 修改数据集描述:为报告添加更清晰的背景信息
    profile = ProfileReport(df,
                            title="Raw Dataset Analysis",
                            explorative=True,
                            dataset={"description": "这是一份用户行为数据集,包含10000条有效记录,覆盖3个月的用户操作数据"})
    

3. 性能优化(针对大数据集)

  • 采样分析:用样本生成报告,提升运行速度
    sample_df = df.sample(n=10000)  # 取10000条样本
    profile = ProfileReport(sample_df, title="Sampled Dataset Analysis", explorative=True)
    
  • 多进程处理:利用多核CPU加速分析
    profile = ProfileReport(df,
                            title="Raw Dataset Analysis",
                            explorative=True,
                            pool_size=4)  # 使用4个进程
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:50:26