首先,我们需要安装Plotly-Dash库,可以使用pip命令进行安装:
```bash
pip install dash plotly
```
然后,我们可以创建一个简单的Dash应用程序,该应用程序包含两个数据框列和一个过滤器。过滤器允许用户根据他们的输入来过滤两个数据框中的行。
以下是代码示例:
```python
import dash
from dash import dcc, html
import pandas as pd
# 创建数据框
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
# 创建应用程序
app = dash.Dash(__name__)
# 创建过滤器
filter = dcc.Input(id='filter', type='text', placeholder='Filter...')
# 创建数据框列
dataframe1 = html.Div([
html.Table([
html.Thead(html.Tr([html.Th(col) for col in df1.columns])),
html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in df1.values])
])
], id='dataframe1')
dataframe2 = html.Div([
html.Table([
html.Thead(html.Tr([html.Th(col) for col in df2.columns])),
html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in df2.values])
])
], id='dataframe2')
# 创建应用程序布局
app.layout = html.Div([filter, dataframe1, dataframe2])
# 创建回调函数,以过滤数据框
@app.callback(
dash.dependencies.Output('dataframe1', 'children'),
[dash.dependencies.Input('filter', 'value')]
)
def filter_dataframe1(value):
if value:
filtered_df = df1[df1.apply(lambda x: all([x[col].__contains__(value) for col in df1.columns])).any()]
return html.Div([
html.Table([
html.Thead(html.Tr([html.Th(col) for col in filtered_df.columns])),
html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in filtered_df.values])
])
], id='dataframe1')
else:
return dataframe1
# 创建回调函数,以过滤数据框2
@app.callback(
dash.dependencies.Output('dataframe2', 'children'),
[dash.dependencies.Input('filter', 'value')]
)
def filter_dataframe2(value):
if value:
filtered_df = df2[df2.apply(lambda x: All([x[col].__contains__(value) for col in df2.columns])).any()]
return html.Div([
html.Table([
html.Thead(html.Tr([html.Th(col) for col in filtered_df.columns])),
html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in filtered_df.values])
])
], id='dataframe2')
else:
return dataframe2
# 运行应用程序
if __name__ == '__main__':
app.run_server(debug=True)
```
这个应用程序将创建一个具有两个数据框列和一个过滤器的简单仪表板。过滤器允许用户根据他们的输入来过滤两个数据框中的行。
这是一个可能的测试用例:
1. 启动应用程序,打开浏览器并访问http://127.0.0.1:8050/
2. 在过滤器中输入"3"
3. 查看两个数据框,只有一行包含"3",显示在相应的表格中。
这个应用程序可以用于过滤具有多个数据框列的仪表板。我们可以根据需要添加更多的回调函数和过滤条件。