交互式应用
通过其多个接口,ydata-profiling
报告可以集成到交互式数据应用中,例如使用 Streamlit 或 Panel 开发的应用。
Streamlit
Streamlit 是一个开源的 Python 库,专为构建机器学习和数据科学的网页应用而设计。
注意
此功能仅适用于 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 框架,基于 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 问题 和 此集成示例。