用 python tkinter pandas 写一个能够处理本地excel文件合并、分组、统计的程序
时间: 2024-03-22 14:39:58 浏览: 114
利用Python pandas对Excel进行合并的方法示例
5星 · 资源好评率100%
好的,下面是一个简单的实现:
```python
import tkinter as tk
from tkinter import filedialog
import pandas as pd
root = tk.Tk()
root.title("Excel处理工具")
# 选择文件
def choose_file():
file_path = filedialog.askopenfilename()
file_path_entry.delete(0, tk.END)
file_path_entry.insert(tk.END, file_path)
# 合并文件
def merge_files():
file_path = file_path_entry.get()
if not file_path:
tk.messagebox.showerror("错误", "请选择要合并的文件")
return
merged_data = pd.DataFrame()
data = pd.read_excel(file_path)
merged_data = merged_data.append(data, ignore_index=True)
data_table.delete(*data_table.get_children())
for i, row in merged_data.iterrows():
data_table.insert("", tk.END, values=[row["名称"], row["数量"], row["价格"]])
# 分组统计
def group_and_count():
selected_items = data_table.selection()
if len(selected_items) == 0:
tk.messagebox.showerror("错误", "请选择要统计的数据")
return
data = []
for item in selected_items:
name, count, price = data_table.item(item)["values"]
data.append({"名称": name, "数量": count, "价格": price})
grouped_data = pd.DataFrame(data).groupby("名称").agg({"数量": "sum", "价格": "mean"}).reset_index()
result_table.delete(*result_table.get_children())
for i, row in grouped_data.iterrows():
result_table.insert("", tk.END, values=[row["名称"], row["数量"], row["价格"]])
# 文件路径输入框和按钮
file_path_label = tk.Label(root, text="文件路径")
file_path_label.pack(pady=10)
file_path_entry = tk.Entry(root, width=50)
file_path_entry.pack()
choose_file_btn = tk.Button(root, text="选择文件", command=choose_file)
choose_file_btn.pack(pady=10)
# 数据表格
data_table_label = tk.Label(root, text="数据")
data_table_label.pack(pady=10)
data_table = tk.ttk.Treeview(root, columns=["name", "count", "price"], show="headings")
data_table.heading("name", text="名称")
data_table.heading("count", text="数量")
data_table.heading("price", text="价格")
data_table.pack()
# 合并按钮
merge_btn = tk.Button(root, text="合并", command=merge_files)
merge_btn.pack(pady=10)
# 分组统计按钮
group_btn = tk.Button(root, text="分组统计", command=group_and_count)
group_btn.pack(pady=10)
# 分组统计结果表格
result_table_label = tk.Label(root, text="统计结果")
result_table_label.pack(pady=10)
result_table = tk.ttk.Treeview(root, columns=["name", "count", "price"], show="headings")
result_table.heading("name", text="名称")
result_table.heading("count", text="数量")
result_table.heading("price", text="平均价格")
result_table.pack()
root.mainloop()
```
这个程序使用了 Python 的 Tkinter 库来实现 GUI 界面,使用 Pandas 库来读取和处理 Excel 文件。用户可以通过点击“选择文件”按钮选择要处理的 Excel 文件,然后点击“合并”按钮进行合并,合并后的数据会显示在数据表格中。用户可以在数据表格中选择要统计的数据,然后点击“分组统计”按钮进行统计,统计结果会显示在统计结果表格中。注意,这个程序只支持处理包含“名称”、“数量”、“价格”三列数据的 Excel 文件。
阅读全文