跳到内容

交互式应用

ydata-profiling 报告通过其多个接口,可以集成到交互式数据应用中,例如使用 StreamlitPanel 开发的应用。

Streamlit

Streamlit 是一个开源 Python 库,用于构建机器学习和数据科学的 Web 应用。

注意

此功能仅适用于 ydata-profiling 的旧版本(<=3.6.2)。

image

使用 ydata-profiling 创建一个简单的 Streamlit 应用
import pandas as pd
import ydata_profiling
import streamlit as st
from streamlit_pandas_profiling import st_profile_report
df = pd.read_csv(
    "https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"
)
pr = df.profile_report()

st.title("Profiling in Streamlit")
st.write(df)
st_profile_report(pr)

您可以使用 pip 安装 Streamlit 的 ydata-profiling 组件

pip install streamlit-pandas-profiling

Dash

Dash 是一个 Python 框架,用于构建机器学习和数据科学的 Web 应用,它构建在 Plotly.js、React 和 Flask 之上。它常用于交互式数据探索,这正是 ydata-profiling 也关注的领域。内联访问 ydata-profiling 提供的洞察可以帮助指导 Dash 允许的探索性工作。要在 Dash 应用中集成 Profiling 报告,有两种选择

将报告的 HTML 版本作为资产加载

假设报告的 HTML 版本位于 report.html,将其移动到一个名为 assets 的文件夹中。下面的代码片段展示了一个简单的 Dash 应用 app.py,它嵌入了该报告

创建一个集成 ydata-profiling 的 Dash 面板
import dash
from dash import html

app = dash.Dash(__name__)

app.layout = html.Div(
    children=[
        html.Iframe(
            src="assets/census_report.html",  # must be under assets/ to be properly served
            style={"height": "1080px", "width": "100%"},
        )
    ]
)

if __name__ == "__main__":
    app.run_server(debug=True)

运行 python app.py 后,一个嵌入了报告的 Dash 应用将在 http://127.0.0.1:8050 可用。

直接嵌入原始 HTML

一个更非传统的方法,无需显式文件处理,涉及使用 dash-dangerously-set-inner-html 库直接嵌入原始 HTML 文本(因此无需导出 HTML)。通过 pip 安装该库

pip install dash-dangerously-set-inner-html

并按以下代码片段配置 Dash 应用

将原始 html 嵌入 Dash
import pandas as pd
from ydata_profiling import ProfileReport
import dash
from dash import html
import dash_dangerously_set_inner_html

# Creating the Report
df = pd.read_csv(
    "https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"
)
profile = ProfileReport(df, title="Titanic Dataset")
text_raw = profile.to_html()

# Creating the Dash app

app = dash.Dash(__name__)

app.layout = html.Div(
    [dash_dangerously_set_inner_html.DangerouslySetInnerHTML(text_raw)]
)

app.layout = html.Div(
    [dash_dangerously_set_inner_html.DangerouslySetInnerHTML(text_raw)]
)

if __name__ == "__main__":
    app.run_server(debug=True)

运行 python app.py 后,一个嵌入了报告的 Dash 应用将在 <http://127.0.0.1:8050>`_ 可用。虽然此选项更为直接,但**嵌入的报告将无法完全交互,部分按钮不可点击**。 Panel ----- 关于如何在 Panel 中使用 ydata-profiling[ 的更多信息,请参阅 `此 GitHub 问题 \<https://github.com/ydataai/ydata-profiling/issues/491>]{.title-ref}_ 和 此集成示例