交互式应用
ydata-profiling
报告通过其多个接口,可以集成到交互式数据应用中,例如使用 Streamlit 或 Panel 开发的应用。
Streamlit
Streamlit 是一个开源 Python 库,用于构建机器学习和数据科学的 Web 应用。
注意
此功能仅适用于 ydata-profiling 的旧版本(<=3.6.2)。

使用 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}_ 和 此集成示例。
