日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python】app未注册用户自动筛选

發布時間:2025/3/12 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python】app未注册用户自动筛选 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文目標:手把手教一名零基礎員工開發一款python桌面應用程序

項目目標:領導給了兩張表,一張是全部員工表,一張是注冊用戶表,讓統計未注冊用戶的詳細清單

前期準備:自學python基本語法,能看懂python語句即可

結果展示:

上圖為運行結果。

接下來我將從頭開始講解。

一、環境搭建

Python的環境搭建很簡單,在官網下載后直接安裝即可,網址為:

“https://www.python.org/downloads/windows/”。注意選擇版本為3.9,因為后面用到的打包軟件不支持3.10。

安裝成功后確認一下是否將安裝目錄添加到環境變量里,若沒有添加需要自行添加。接下來安裝本項目需要用到的模塊pandas,openpyxl,pywin32,pyinstaller,使用pip命令安裝即可(pip是python自帶的包下載軟件),在命令行敲下以下代碼:

pip config set global.index-url

https://pypi.tuna.tsinghua.edu.cn/simple

上面這行代碼可選擇執行,它的作用是修改pip的下載源地址,默認的地址在國外服務器,速度很慢,這里修改為清華大學的開源鏡像站。

在CMD命令行窗口依次輸入以下代碼:

pip install pandas

pip install openpyxl

pyp install pywin32

pip install pyinstaller

如果無法安裝,提示pip版本太低,請按照提示,執行“pip install --upgrade pip”來更新pip。

上面安裝的4個模塊,pandas用于從excel中取數,處理,以及寫入excel文檔。openpyxl是pandas依賴的一個包,pyinstaller是打包工具,pywin32是pyinstaller在windows平臺打包需要依賴的包。

二、數據審查

環境搭建好了,可以開始我們的項目了,首先對數據進行審查。

觀察“成都公司全部用戶.xlsx”表,其數據格式如下:

彭**

P*******9

/xx公司/xx部門/

曾**

Z*******4

/xx公司/xx部門/

于**

Y*******2

/xx公司/xx部門/

再觀察“成都公司注冊用戶統計.xlsx”表,其數據格式如下:

姓名

部門

性別

企業簡稱

使用狀態

劉**

/xx公司/xx部門/

XX

已通知

王**

/xx公司/xx部門/

XX

已通知

黃**

/xx公司/xx部門/

XX

已通知

任務目標是從前表中篩選出不在后表中的人,顯然僅憑名字是有可能因為同名而出錯的,所以要根據名字和部門兩個信息來進行篩選。

三、代碼編寫

了解了數據,確定了方案后就可以開始編程了。

首先導入我們需要的模塊:

import pandas as pd

然后讀取用戶輸入的文件名(設置默認文件名更方便使用):

filename=input() if len(filename)<1 :filename="./成都公司注冊用戶統計.xlsx"

獲取到文件名后就可以讀取文件了:

df_all = pd.read_excel("./成都公司全部用戶.xlsx",header=None) df = pd.read_excel(filename,header=None)

這里因為“成都公司全部用戶.xlsx”是固定不變的,所以作為資源文件放在項目目錄,不需要用戶輸入文件名。其中df和df_all兩個變量是DataFrame類型,和二維數組比較類似,可以很方便的存儲表格。pandas.read_excel()函數可以讀取excel文檔,第一個參數是文件名,參數header設置表格是否有表頭,”None”表示沒有,設置成0或[0,1,2]這樣的值則意味著表格的前幾行作為表頭。

接下來對獲取到的數據進行處理:

df=df.drop(index=0) df_all[3]=df_all[0]+df_all[2] df[2]=df[0]+df[1].apply(lambda x: x.partition("xx公司")[2]+"/") all=[] all=df_all[3].values.tolist() done=[] done=df[2].values.tolist()

將第一張表的第1列和第3列合并,第二張表的第1列和第2列的一部分內容合并,并在尾部補充一個字符“/”使得,兩張表的部門格式一致。最后以合并得到的列生成列表,以便后續處理。

使用filter函數篩選出未注冊的人員,再轉換成列表存儲到result變量中:

result=[] result = list(filter(lambda x:x not in done, all))

filter函數接受一個函數變量作為參數,這個函數必須接受一個參數并返回布爾值,filter依據這個值來篩選all列表中的每一項。

至此,我們得到了我們想要的結果,現在只需要把結果稍微處理一下,然后輸出到一個excell表格即可:

formatresult=[] ? ? #將結果轉換成多列,便于審查 unworklist=[] ? ? ? #挑選出不在崗的人 for x in result:if x.rfind('不在崗')>0:unworklist.append(x)else:formatresult.append(x.split('/')) df_result=pd.DataFrame(formatresult) df_unwork=pd.DataFrame(unworklist) print("處理完成,正在輸出結果...") wr=pd.ExcelWriter("./result.xlsx") df_result.to_excel(wr,"Sheet1") df_unwork.to_excel(wr,"Sheet2") wr.save() wr.close()

這里將之前合并的列以“/”為間隔拆分為多列,便于審查,也順便把不在崗的人員篩選了出去存入另一張子表。最后使用ExcelWriter將結果分別寫入兩張子表保存。

四、打包項目

為了使得編寫好的python程序在所有windows電腦上都能運行,我們需要把程序打包成exe可執行文件。這就要用到一開始下載的模塊pyinstaller。

進入到項目目錄,打開CMD命令行窗口,執行命令:

pyinstaller -F igw-uninstaller.py

其中”igw-uninstaller.py”是程序文件名,等待程序執行完畢后會在項目目錄里生成兩個文件夾“build”和“dist”以及一個“.spec”文件,“build”保存了一些生成過程中的日志文件,“.spec”文件為生成過程中產生的目錄文件。“dist”文件夾中保存的則是最終生成的“.exe”文件,默認以程序文件名一致。

將資源文件“成都公司全部用戶.xlsx”放到和可執行文件同級目錄下,就可以運行程序了,雙擊運行一下吧!

至此,未注冊用戶的詳細清單全部理出,并存入result.xlsx。

五、后記

本文主要介紹了一個簡單的python桌面應用程序實現方式,閱讀本文能快速了解一個python程序的設計,開發,與打包發布過程,希望能幫助讀者了解python,開發一個python桌面程序也不是那么難嘛!后面有更復雜的應用場景我們還會進行UI的開發。

開源代碼:

#app安裝統計相關函數 from numpy import format_parser import pandas as pdprint("請保證‘成都公司全部用戶.xlsx’文件與本程序位于同一目錄,且文件名一致") print("請輸入已注冊用戶統計表文件地址,默認為‘./成都公司注冊用戶統計.xlsx’,默認其位于當前目錄,使用默認文件名請直接回車:") filename=input() if len(filename)<1 :filename="./成都公司注冊用戶統計.xlsx" print("正在載入表格...") df_all = pd.read_excel("./成都公司全部用戶.xlsx",header=None) df = pd.read_excel(filename,header=None) print("載入表格成功,正在處理,請勿關閉程序...") df=df.drop(index=0) df_all[3]=df_all[0]+df_all[2] df[2]=df[0]+df[1].apply(lambda x: x.partition("xx公司")[2]+"/") all=[] all=df_all[3].values.tolist() done=[] done=df[2].values.tolist() #現在我們要得到在all列表里面不在done列表里面的 result=[] result = list(filter(lambda x:x not in done, all)) formatresult=[] ? ? #將結果轉換成多列,便于審查 unworklist=[] ? ? ? #挑選出不在崗的人 for x in result:if x.rfind('不在崗')>0:unworklist.append(x)else:formatresult.append(x.split('/')) df_result=pd.DataFrame(formatresult) df_unwork=pd.DataFrame(unworklist) print("處理完成,正在輸出結果...") wr=pd.ExcelWriter("./result.xlsx") df_result.to_excel(wr,"Sheet1") df_unwork.to_excel(wr,"Sheet2") wr.save() wr.close() input("完成,結果保存為result.xlsx,請輸入回車結束程序")往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件

本站qq群554839127,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【python】app未注册用户自动筛选的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。