亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

用Python實現(xiàn)數(shù)據(jù)篩選與匹配實例

 更新時間:2022年02月03日 10:02:58   作者:mez_Blog  
大家好,本篇文章主要講的是用Python實現(xiàn)數(shù)據(jù)篩選與匹配實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

下面我們將學習兩個項目案例代碼,分別解決Excel常見場景中的數(shù)據(jù)篩選問題和數(shù)據(jù)匹配問題。

數(shù)據(jù)篩選要求我們在表中篩選出符合條件的數(shù)據(jù)。
數(shù)據(jù)匹配需要我們在多個表之間匹配相關的數(shù)據(jù)。

與之前一樣,完成項目問題的代碼,需要我們先分析數(shù)據(jù)篩選數(shù)據(jù)匹配的需求,再找到對應知識點,確定代碼的執(zhí)行順序,從而實現(xiàn)項目代碼。

案例一:數(shù)據(jù)篩選

這個案例需要我們篩選出遲到人員的信息,來具體看看。

在【10月考勤統(tǒng)計.xlsx】工作簿中,保存了公司一百名員工的遲到信息,這些信息包含了遲到時間遲到次數(shù)。

公司規(guī)定,遲到時間超過45分鐘且遲到過3次以上的員工記為考勤不合格,需要扣除300的考勤保證金。

之前的同事需要把篩選后的結果保存為【10月遲到人員信息.xlsx】,并將整理后的信息上報給領導。

那么如何用代碼實現(xiàn)這個場景呢?

在編寫代碼之前,我們要先明確任務需求。

根據(jù)公司的規(guī)定,篩選出【10月考勤統(tǒng)計.xlsx】中遲到時間大于45分鐘并且遲到次數(shù)超過3次以上的員工信息,將遲到人員信息打印出來后再存入新工作簿【10月遲到人員信息.xlsx】中。

代碼實現(xiàn):

from openpyxl import load_workbook, Workbook
 
# 打開【10月考勤統(tǒng)計.xlsx】工作簿
wb = load_workbook('./material/10月考勤統(tǒng)計.xlsx')
# 獲取活動工作表
ws = wb.active
print(ws)
print(ws[1])
print('----------------')
# 獲取表頭
late_header = []
for cell in ws[1]:
    late_header.append(cell.value)
    print(cell.value)
 
# 新建工作簿
new_wb = Workbook()
# 獲取新工作簿中的工作表
new_ws = new_wb.active
 
# 將表頭寫入新工作簿的工作表中
new_ws.append(late_header)
 
# 從第二行開始遍歷表格
for row in ws.iter_rows(min_row=2, values_only=True):
    # 取出姓名,遲到時間和遲到次數(shù)
    name = row[1]
    time = row[3]
    number = row[-1]
    # 判斷是否遲到
    if time > 45 and number > 3:
        print('{}遲到了{}分鐘,遲到了{}次'.format(name, time, number))
        # 將遲到人員信息寫入新工作簿的工作表中
        new_ws.append(row)
 
# 將新工作簿保存為【10月遲到人員信息.xlsx】
new_wb.save('./material/10月遲到人員信息.xlsx')

 運行結果:

根據(jù)任務需求,我們需要獲取兩部分數(shù)據(jù):表頭數(shù)據(jù)和表頭以外的所有數(shù)據(jù)。

你可能會比較疑惑,為什么要單獨獲取表頭數(shù)據(jù)呢?

由于任務需要我們生成新的工作簿【10月遲到人員信息.xlsx】,新工作簿中的表頭與【10月考勤統(tǒng)計.xlsx】相同,所以我們需要獲取到表頭的數(shù)據(jù)以便后續(xù)使用。

使用數(shù)據(jù)

我們需要在這一步實現(xiàn)數(shù)據(jù)篩選功能,通過分析任務需求可以總結出三個篩選條件:

1)遲到時間大于45分鐘。
2)遲到次數(shù)大于3次。
3)同時滿足上面兩個條件。

明確了篩選條件后,就可以借助條件判斷語句,比較運算符,成員運算符邏輯運算符等Python基礎知識,實現(xiàn)對于數(shù)據(jù)的篩選,即將上面得到的篩選條件用Python語言實現(xiàn)出來。

假設我們用time來代表遲到時間,用number代表遲到次數(shù),那么篩選條件就可以寫為:
if time > 45 and number > 3:

數(shù)據(jù)輸出

完成篩選后,我們需要根據(jù)實際需求將篩選結果輸出到終端,或將篩選結果保存起來。

本次任務要求我們將篩選后的員工信息打印出來,并且存儲到【10月遲到人員信息.xlsx】中。

如果需要獲取工作簿中滿足某些條件的數(shù)據(jù),這種場景就可以被歸類為數(shù)據(jù)篩選場景。

處理該場景時,可以按照獲取數(shù)據(jù),使用數(shù)據(jù)數(shù)據(jù)輸出這三個步驟來處理。

首先是獲取數(shù)據(jù),使用上節(jié)課學習過的表格讀寫的相關知識,根據(jù)任務需求,確定要獲取的是零散的單元格,是單行/單列,還是多行/多列的數(shù)據(jù)。

數(shù)據(jù)篩選的關鍵落在了篩選二字上,我們可以在使用數(shù)據(jù)這一步中實現(xiàn)篩選功能。

在這一步,要仔細理解任務需求,明確篩選條件,然后根據(jù)實際情況,選擇Python基礎語法的相關知識(條件判斷語句,比較運算符,成員運算符和邏輯運算符),構造篩選條件。

最后是數(shù)據(jù)輸出部分,根據(jù)實際需要輸出篩選結果,或將篩選結果保存起來。總結起來可以分為三類:

1)將篩選的結果存入學過的數(shù)據(jù)結構里,比如:列表,元組或字典。
2)將篩選的結果存入文件中。
3)將篩選的結果打印出來。

案例二:數(shù)據(jù)匹配

這個案例需要我們匹配兩張表格中指定的遲到次數(shù),先來看看案例場景。

現(xiàn)有兩張表格,【10月考勤統(tǒng)計.xlsx】中記錄了員工十月份的遲到次數(shù)數(shù)據(jù),這份表格是公司行政手動記錄的。

【遲到次數(shù)月度統(tǒng)計(10月更新).xlsx】中按月記錄了員工每月的遲到次數(shù)數(shù)據(jù),這份表格是由公司的考勤系統(tǒng)自動生成的。

兩份表格中的數(shù)據(jù)可以通過工號一一對應。

現(xiàn)需要核對兩張表格中10月遲到次數(shù)是否匹配(即兩表中相同工號在十月份的遲到次數(shù)是否一致),并在終端提醒相關人員去核查不匹配的情況。

 代碼實現(xiàn):

from openpyxl import load_workbook
 
# 打開工作簿【10月考勤統(tǒng)計.xlsx】,獲取活動工作表
wb = load_workbook('./material/10月考勤統(tǒng)計.xlsx')
ws = wb.active
 
# 創(chuàng)建遲到人員字典
info_dict = {}
 
# 循環(huán)讀取除表頭外的表格數(shù)據(jù)
for row in ws.iter_rows(min_row=2, values_only=True):
    # 取出員工工號
    staff_id = row[0]
    # 取出遲到次數(shù)
    staff_late = row[-1]
    # 將信息添加入字典,字典格式為{'員工工號': '遲到次數(shù)'}
    info_dict[staff_id] = staff_late
 
# 打開工作簿【遲到次數(shù)月度統(tǒng)計(10月更新).xlsx】,獲取活動工作表
monthly_wb = load_workbook('./material/遲到次數(shù)月度統(tǒng)計(10月更新).xlsx')
monthly_ws = monthly_wb.active
 
# 循環(huán)讀取出表頭外的表格數(shù)據(jù)
for monthly_row in monthly_ws.iter_rows(min_row=3, max_col=13, values_only=True):
    # 取出員工工號
    member_id = monthly_row[0]
    # 取出十一月份的遲到次數(shù)
    member_late = monthly_row[-1]
    # 匹配遲到次數(shù)是否相等
    if member_late != info_dict[member_id]:
        print('工號{}遲到情況不匹配,請核查后更新'.format(member_id))

 運行結果:

為什么會選擇存儲到字典中呢?

因為字典可以很好地體現(xiàn)出工號遲到次數(shù)的對應關系,即{'工號': '遲到次數(shù)'}。

然后把【遲到次數(shù)月度統(tǒng)計(10月更新).xlsx】中的遲到次數(shù),與字典中存儲的遲到次數(shù)進行匹配,再判斷相同工號對應的遲到次數(shù)是否相同。

到此這篇關于用Python實現(xiàn)數(shù)據(jù)篩選與匹配實例的文章就介紹到這了,更多相關Python數(shù)據(jù)篩選與匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論