使用 Pandas Table 在 Tkinter 中探索数据表_数据帧

什么是PandasTable

在数据分析的世界里,Pandas库是Python程序员的得力工具。而今天,我们要向大家推荐一个基于Pandas的创新项目——PandasTable,它为Pandas的数据操作提供了一个直观的、交互式的表格界面。

PandasTable是一个轻量级的库,它的目标是在Jupyter notebook或类似的环境中,将数据帧(DataFrame)以表格形式展示出来,并且提供实时编辑的功能。这意味着你可以直接在界面上进行添加、删除、修改行或列等操作,极大地提升了数据处理的效率和用户体验。

先决条件:

安装 pandas 和 pandastable 库。

pip install pandas
pip install pandastable

在 Tkinter 中使用 PandasTable 创建交互式数据表

让我们从导入本教程所需的库开始。

import tkinter as tk
from pandastable import Table, TableModel
import pandas as pd

为您的应用程序创建一个类并初始化 Tkinter 主窗口。

class PandasTableApp:
    def __init__(self, root):
        self.frame = tk.Frame(root)
        self.frame.pack(padx=10, pady=10)

接下来,我们需要定义一个包含一些示例数据的 DataFrame,我们将在 PandasTable 中展示这些数据。

# Create a sample DataFrame
        data = {'Name': ['John', 'Alice', 'Bob'],
                'Age': [28, 24, 22],
                'City': ['New York', 'San Francisco', 'Los Angeles']}
        df = pd.DataFrame(data)

现在,创建一个 PandasTable 小部件并在 Tkinter 窗口中显示 DataFrame。请记住调用 show 函数,因为它负责直观地呈现(或更新)PandasTable。

# Create a PandasTable
        self.table = Table(self.frame, dataframe=df, showtoolbar=True, showstatusbar=True)
        self.table.show()

提示:永远不要将根窗口作为 PandasTable 对象的父级(第一个参数)。您必须使用容器类型对象 (如 frame) 作为父对象。

使用 Tkinter 主循环完成脚本。

if __name__ == "__main__":
    root = tk.Tk()
    app = PandasTableApp(root)
    root.mainloop()

这给我们以下输出:

使用 Pandas Table 在 Tkinter 中探索数据表_数据帧_02

直接修改 PandasTable

大多数功能都相当直观,因此几乎不需要解释如何使用它们。相反,我们将重点解释另一个重要方面。

作为程序员,您需要知道如何在内部(通过代码)修改此表。在前面的示例中,我们使用 DataFrame 初始化了 Table,但如果我们想进行修改(例如,加载另一个 DataFrame 或添加新记录),该怎么办?

为此,您可以使用 attributes 访问 DataFrame。

import tkinter as tk
from pandastable import Table, TableModel
import pandas as pd

class PandasTableApp:
    def __init__(self, root):
        self.frame = tk.Frame(root)
        self.frame.pack(padx=10, pady=10)

        # Create a sample DataFrame
        data = {'Name': ['John', 'Alice', 'Bob'],
                'Age': [28, 24, 22],
                'City': ['New York', 'San Francisco', 'Los Angeles']}
        self.df = pd.DataFrame(data)

        # Create a PandasTable
        self.table = Table(self.frame, dataframe=self.df, showtoolbar=True, showstatusbar=True)
        self.table.show()

        self.modify_table()

    def modify_table(self):
        new_row = {'Name': 'Eve', 'Age': 25, 'City': 'Paris'}
        self.df = self.df._append(new_row, ignore_index=True)
        self.table.model.df = self.df
        self.table.redraw()

if __name__ == "__main__":
    root = tk.Tk()
    app = PandasTableApp(root)
    root.mainloop()

使用 Pandas Table 在 Tkinter 中探索数据表_Tkinter GUI_03

我们的新行已添加