이 글을 쓰기로 결정한 원래 의도는 "Python을 사용하여 데이터 소스를 기반으로 피벗 테이블을 자동으로 생성하는 방법"에 대한 친구의 질문에서 나왔습니다. 이 문제 뒤에는 아주 좋은 해결책 아이디어가 있습니다. , 코드가 대신 수행하도록 하세요. 반복적인 작업을 수행하여 작업량을 줄이고 오류를 줄입니다.
Python에서 개발한 가젯은 실제로 Python 프로그램을 exe로 패키징하여 공유 후 사용할 수 있습니다. 컴퓨터에 Python 환경이 설치되어 있지 않아도 작업 효율성을 높이고 초과 근무를 최소화하는 데 사용할 수 있습니다.
콘텐츠 개요
작업을 반복적으로 수행하고 공급업체 이름, 월, 입고 금액의 세 가지 필드를 사용하여 원하는 피벗 테이블 형식을 생성합니다.
데스크톱 창을 만듭니다. 여기서는 Python의 자체 GUI 라이브러리이며 설치 후 사용할 수 있습니다.
pip install tkinter
pyinsatller를 사용하여 프로그램을 exe로 패키징하세요. 장점은 코드를 서버에 배포할 필요가 없고 패키징된 exe를 상대방에게 직접 보낼 수 있다는 점입니다. 이 작고 가벼운 기능에 적합합니다.
pip install pyinstaller
피벗 테이블 및 필터 데이터를 생성하는 Excel 파일, 파일 이름: excel_to_pivot.py
import pandas as pd import numpy as np class ExcelToPivot(object): def __init__(self, filename, file_path): self.file_name = filename self.file_path = file_path """ excel自动转透视表功能 返回透视结果 """ def excel_Pivot(self): print(self.file_path) data = pd.read_excel(self.file_path) data_pivot_table = pd.pivot_table(data, index=['供应商名称', '月份'], values=["入库金额"], aggfunc=np.sum) return data_pivot_table """ 按条件筛选,并保存 """ def select_data(self, name, month): data_pivot_table = self.excel_Pivot() data_new = data_pivot_table.query('供应商名称 == ["{}"] & 月份 == {}'.format(name, month)) data_new.to_excel('{}.xlsx'.format(str(self.file_name).split('.')[0])) return '筛选完成!' if __name__ == '__main__': filename = input("请输入文件名字:") path = 'C:/Users/cherich/Desktop/' + filename pross = ExcelToPivot(filename, path) print(pross.select_data("C", 4))
디자인 데스크톱 창 기능, 파일 이름: Operation.py
from tkinter import Tk, Entry, Button, mainloop import tkinter.filedialog import excel_to_pivot from tkinter import messagebox from tkinter import ttk def Upload(): global filename, data_pivot_table try: filename = tkinter.filedialog.askopenfilename(title='选择文件') pross = excel_to_pivot.ExcelToPivot(str(filename).split('/')[-1], filename) data_pivot_table = pross.excel_Pivot() messagebox.showinfo('Info', '转换成功!') except Exception as e: print(e) messagebox.showinfo('Info', '转换失败!') def select(name, month): try: print('供应商名称 == ["{}"] & 月份 == {}'.format(name, month)) data_new = data_pivot_table.query('供应商名称 == ["{}"] & 月份 == {}'.format(name, month)) data_new.to_excel('{}.xlsx'.format(str(filename).split('.')[0])) messagebox.showinfo('Info', '筛选完成并生成文件!') root.destroy() except Exception as e: print(e) messagebox.showinfo('Info', '筛选失败!') root = Tk() root.config(background="#6fb765") root.title('自动转透视表小工具') root.geometry('500x250') e1 = Entry(root, width=30) e1.grid(row=2, column=0) btn1 = Button(root, text=' 上传文件 ', command=Upload).grid(row=2, column=10, pady=5) box1 = ttk.Combobox(root) # 使用 grid() 来控制控件的位置 box1.grid(row=5, sticky="NW") # 设置下拉菜单中的值 box1['value'] = ('A', 'B', 'C', 'D', '供应商') # 通过 current() 设置下拉菜单选项的默认值 box1.current(4) box2 = ttk.Combobox(root) box2.grid(row=5, column=1, sticky="NW") box2['value'] = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '月份') box2.current(12) # 编写回调函数,绑定执行事件 def func(event): global b1, b2 b1 = box1.get() b2 = box2.get() # 绑定下拉菜单事件 box1.bind("<<ComboboxSelected>>", func) box2.bind("<<ComboboxSelected>>", func) btn2 = Button(root, text=' 筛选数据 ', command=lambda: select(b1, b2)).grid(row=30, column=10, pady=5) mainloop()
실행 결과가 위와 같으면 코드에 문제가 없으며 다음 단계로 진행할 수 있음을 나타냅니다.
DOS 창을 열고 두 개의 py 파일이 있는 디렉터리로 전환합니다. 경로에 중국어 문자가 포함되지 않도록 주의하세요.
pyinsatller -F -w opration.py
pyinstaller 명령의 일반적인 선택적 매개변수:
현재 디렉터리에 build 및 dist라는 두 개의 폴더가 생성됩니다. Dist에는 모든 실행 가능한 exe 파일이 포함되어 있습니다. 바로가기를 바탕화면으로 보내고 opration.exe를 클릭하여 실행하세요.
일부 파트너는 Python 환경을 설치한 지 얼마 되지 않았는데, 파일이 너무 크다는 문제는 존재하지 않을 수도 있습니다. 예를 들어, 내 컴퓨터에 Python 종속성 패키지와 아나콘다가 많이 설치되어 있는데, 실제로 패키지 파일이 660M인데, 패키지하는 데 시간이 오래 걸리고 나중에 수정 후에는 31M로 줄었습니다. 빠르고 몇 초 안에 실행될 수 있습니다. 해결 방법은 Windows 시스템에 Python 가상 환경을 설치하는 것입니다. 다음 작업은 Python이 컴퓨터에 설치된 경우에만 수행할 수 있습니다.
找到 Python 所在路径,如果忘记了,可以在电脑左下角搜索【编辑系统环境变量】——【用户变量】——【PATH】中找到
虚拟环境可以理解为是 Python 解释器的一个副本,在这个环境你可以安装私有包,而且不会影响系统中安装的全局 Python 解释器。虚拟环境非常有用,可以在系统的 Python 解释器中避免包的混乱和版本的冲突。
重要是不同虚拟环境可以搭建不同的 Python 版本,创建时候选择,我们这里需要一个相对 "干净" 的 Python 环境,没有安装过多依赖包,避免 exe 打包文件过大,所以用到虚拟环境。
pip install virtualenv pip install virtualenvwrapper-win
mkvirtualenv -p="C:UserscherichAppDataLocalProgramsPythonPython38python.exe" py38
进入虚拟环境,可以看到只有几个默认的 Python 库
这时可以测试一下代码,是否缺少相关依赖,比如我这个缺少 Pandas,openpyxl,依次按照 pip install 包名安装即可,非常重要的点:pyinstaller 必须重新安装,文件才会缩小。
上述操作完成后,打包就可以了,最后退出虚拟环境即可。
退出虚拟环境
deactivate
위 내용은 너무 강해! Python은 데스크탑 가젯을 개발하고 코드가 우리를 위해 반복적인 작업을 수행하도록 해줍니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!