Plotly-Dash:如何过滤具有多个数据框列的仪表板?
启动应用程序,打开浏览器并访问 在过滤器中输入"3" 查看两个数据框,只有一行包含"3",会显示在相应的表格中
发布日期:2025-05-05 17:05:47
浏览次数:2
分类:精选文章
本文共 2304 字,大约阅读时间需要 7 分钟。
安装Plotly-Dash库是创建交互式数据可视化应用的第一步。可以通过以下命令在终端或命令提示符中安装:
pip install dash plotly
接下来,我们可以创建一个简单的Dash应用程序。这个应用程序包含两个数据框和一个过滤器,允许用户根据输入筛选数据框中的行。
以下是一个实现这一功能的Python代码示例:
import dashfrom dash import dcc, htmlimport 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])# 过滤数据框1的回调函数@app.callback( output=Output('dataframe1', 'children'), inputs=[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]) ]) ]) return dataframe1# 过滤数据框2的回调函数@app.callback( output=Output('dataframe2', 'children'), inputs=[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]) ]) ]) return dataframe2# 运行应用程序if __name__ == '__main__': app.run_server(debug=True) 这个应用程序会创建一个包含两个数据框和一个过滤器的仪表板。过滤器允许用户根据输入筛选两个数据框中的行。
测试用例:
http://127.0.0.1:8050/这个应用程序可以用于过滤具有多个数据框列的仪表板。您可以根据需要添加更多的回调函数和过滤条件。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月18日 13时01分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!