Skip to content

交互式应用

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

Streamlit

Streamlit 是一个开源的 Python 库,专为构建机器学习和数据科学的网页应用而设计。

注意

此功能仅适用于 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 框架,基于 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",  # 必须位于 assets/ 下才能正确提供服务
            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

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

# 创建 Dash 应用

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 问题此集成示例