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

Python實(shí)現(xiàn)自動(dòng)化處理每月考勤缺卡數(shù)據(jù)

 更新時(shí)間:2022年06月27日 14:21:31   作者:阿黎逸陽(yáng)  
不管是上學(xué)還是上班都會(huì)統(tǒng)計(jì)考勤,有些學(xué)?;蚬緯?huì)對(duì)每月缺卡次數(shù)過(guò)多(比如三次以上)的人員進(jìn)行處罰。本文提供了Python自動(dòng)處理考勤和日志缺失的方法,需要的可以參考一下

不管是上學(xué)還是上班都會(huì)統(tǒng)計(jì)考勤,有些學(xué)?;蚬緯?huì)對(duì)每月缺卡次數(shù)過(guò)多(比如三次以上)的人員進(jìn)行處罰。

有些公司還規(guī)定對(duì)于基層員工要在工作日提交日志、管理人員要提交周報(bào)或月報(bào),對(duì)于少提交的人員要進(jìn)行處罰。

如果公司HR逐個(gè)對(duì)人員的日志或缺卡數(shù)據(jù)進(jìn)行處理,將是一項(xiàng)耗時(shí)且無(wú)聊的工作。

本文提供了自動(dòng)處理考勤和日志缺失的方法。

不用安裝Python,不用學(xué)Python語(yǔ)法,只要你會(huì)在電腦上新建文件夾,點(diǎn)擊文件就可以實(shí)現(xiàn)考勤和日志缺失名單的統(tǒng)計(jì)輸出。

接下來(lái)一起來(lái)看下實(shí)現(xiàn)步驟吧。

一、效果展示

1.實(shí)現(xiàn)效果

首先來(lái)看下實(shí)現(xiàn)效果。

大體實(shí)現(xiàn)步驟如下:

步驟1:在D盤(pán)中新建“每月缺卡數(shù)據(jù)處理“文件夾(已在代碼中固定死了,必須建該文件夾)。

步驟2:把處理考勤缺失的exe文件和原始數(shù)據(jù)文件放到step1新建的文件夾中。

步驟3:點(diǎn)擊exe文件,會(huì)自動(dòng)出來(lái)csv結(jié)果文件,具體格式如下:

2.原始數(shù)據(jù)模板

原始數(shù)據(jù)文件需為”判斷是否提交日志2.xlsx“,本文使用的原始數(shù)據(jù)如下(表頭需按如下命名):

注:如需本文原始數(shù)據(jù)、和直接運(yùn)行得到結(jié)果的exe文件,可點(diǎn)擊鏈接獲取 提取碼vb6x

其中填報(bào)人指學(xué)生或員工姓名,部門(mén)若為學(xué)生可以填某某班。

填報(bào)時(shí)間指日志填報(bào)時(shí)間,日期指日志實(shí)際日期。若為考勤打卡,兩個(gè)日期都填實(shí)際打卡的日期即可。

若為考勤打卡,今日完成工作列可置為空。

如果原始文件中想存放員工打卡的全年數(shù)據(jù),但想統(tǒng)計(jì)其中某個(gè)月的缺卡數(shù)據(jù)。

只需把想統(tǒng)計(jì)的月份放在日期的第一行即可,代碼中已按日期第一行進(jìn)行了同年月數(shù)據(jù)子框的篩選。

如需設(shè)置定時(shí)任務(wù),把運(yùn)行結(jié)果定時(shí)郵件發(fā)送給相關(guān)人員,可以私信我。

二、代碼詳解

對(duì)于部分了解Python的朋友來(lái)說(shuō),如果有個(gè)性化的需求,可以自己微調(diào)代碼實(shí)現(xiàn)需求。接下來(lái)詳細(xì)闡述實(shí)現(xiàn)上述功能的代碼。

1.導(dǎo)入庫(kù)

首先導(dǎo)入本文需要加載的庫(kù),如果你有些庫(kù)還沒(méi)有安裝,導(dǎo)致運(yùn)行代碼時(shí)報(bào)錯(cuò),可以在Anaconda Prompt中用pip方法安裝。

# -*- coding: UTF-8 -*-
'''
代碼用途 :處理缺卡數(shù)據(jù)
作者     :阿黎逸陽(yáng)
博客     :  https://blog.csdn.net/qq_32532663/article/details/106176609
'''
import os
import calendar
import numpy as np
import pandas as pd
from datetime import datetime
from xlrd import xldate_as_tuple
from chinese_calendar import is_workday
from chinese_calendar import is_holiday
from chinese_calendar import get_holiday_detail

本文應(yīng)用到了os、calendar、numpy、pandas、datetime、xlrd、chinese_calendar庫(kù)。

os庫(kù)可以設(shè)置文件讀取的位置。

calendar和chinese_calendar庫(kù)是日期處理庫(kù)。

numpy和pandas庫(kù)處理數(shù)據(jù)框。

xlrd和datetime庫(kù)處理時(shí)間。

2.定義時(shí)間處理函數(shù)

接著應(yīng)用xlrd和datetime庫(kù)中的函數(shù)定義時(shí)間處理函數(shù),把時(shí)間戳或帶時(shí)分秒的時(shí)間轉(zhuǎn)換成只含年月日的時(shí)間。

def num_to_date(x):   
    '''
    日期處理函數(shù)
    把時(shí)間戳或帶時(shí)分秒的時(shí)間轉(zhuǎn)換成只含年月日的時(shí)間
    '''
    try:
        x1 = datetime(*xldate_as_tuple(x, 0)).strftime('%Y-%m-%d')
    except:
        x1 = datetime.date(x).strftime('%Y-%m-%d')
    return x1

定義成年月日統(tǒng)一時(shí)間的目的是為了方便后續(xù)代碼的運(yùn)行。

3.讀取數(shù)據(jù)調(diào)整日期格式

接著讀取數(shù)據(jù),應(yīng)用第二小節(jié)定義的時(shí)間處理函數(shù)把填報(bào)時(shí)間和日期進(jìn)行處理。

#讀取數(shù)據(jù)
os.chdir(r'D:\每月缺卡數(shù)據(jù)處理')
date = pd.read_excel('判斷是否提交日志2.xlsx', sheet_name='Sheet1')

#調(diào)整日期格式
date['填報(bào)時(shí)間'] = date['填報(bào)時(shí)間'].apply(num_to_date)
date['日期'] = date['日期'].apply(num_to_date)

原始部分?jǐn)?shù)據(jù)如下:

調(diào)用時(shí)間處理函數(shù)得到的部分?jǐn)?shù)據(jù)如下:

4.計(jì)算工作日天數(shù)

接著取出數(shù)據(jù)框日期列的第一個(gè)值,獲取要統(tǒng)計(jì)的年月信息。根據(jù)年月信息獲取該月工作日的天數(shù)。

#取出想看缺卡信息的年月
y_m1 = date['日期'][0][0:7] 

def sele_ym(x, y_m=y_m1):
    '''
    判斷數(shù)據(jù)框中的日期是否為某月
    '''
    if x.find(y_m)>=0:
        return True

#找出這一個(gè)月中的工作日,求出工作日的天數(shù)
days = calendar.Calendar().itermonthdates(int(y_m1.split('-')[0]), int(y_m1.split('-')[1]))    
mth_nwkdays = []  #非工作日
mth_wkdays = []   #工作日
mth_days = []     #全部日期
for day in days:  
    if str(day).find(y_m1)>=0:
        #print(str(day))
        mth_days.append(str(day))
        if is_workday(day)>0:
            mth_wkdays.append(str(day))
        else:
            mth_nwkdays.append(str(day))
work_days = len(mth_wkdays)    #工作日天數(shù)

把工作天數(shù)和員工本月的實(shí)際打卡或?qū)懭罩镜奶鞌?shù)進(jìn)行對(duì)比,如果實(shí)際值小于理論值,說(shuō)明員工缺卡或請(qǐng)假了。

由于大部分的員工都是正常打卡或?qū)懭罩镜?,這時(shí)人工再對(duì)缺卡員工進(jìn)行排查已經(jīng)極大地縮小了排查面。

如有特殊代碼需求,需要求助的,可以到公眾號(hào)中私信我。

5.獲取缺卡名單

最后調(diào)用函數(shù)獲取缺卡名單,主要是對(duì)每個(gè)填報(bào)日期和實(shí)際工作日期進(jìn)行比對(duì)。

#定義獲取缺卡信息的函數(shù)
def stat_dail_short(date, y_m1, work_days):
    '''
    date:存儲(chǔ)日志的數(shù)據(jù)大表
    y_m1:月份
    work_days:該月的工作天數(shù)
    '''
    qk_file = []
    date_m = date[date['日期'].apply(sele_ym)==True]
    for i in set(date_m['填報(bào)人']):
        sub_date = date_m[date_m['填報(bào)人'] == i]
        if len(sub_date['日期'])<work_days:
            qk = str(set(sub_date['填報(bào)人'])) + str(set(sub_date['部門(mén)'])) + '缺了'+ str((work_days-len(sub_date['日期']))) + '次卡' + ';缺卡日期為:'+ str(set(mth_wkdays)^set(sub_date['日期']))
            qk_file.append(qk)
            print(set(sub_date['填報(bào)人']), set(sub_date['部門(mén)']), '缺了%d次卡'%(work_days-len(sub_date['日期'])), ';缺卡日期為:', set(mth_wkdays)^set(sub_date['日期']),sep='')
    qk_file_1 = pd.DataFrame(qk_file)
    qk_file_1.columns = ['缺卡信息']
    qk_file_1.to_csv(y_m1+' 缺卡名單'+'.csv', encoding='gbk') 
    
#調(diào)用函數(shù)獲取缺卡名單
stat_dail_short(date, y_m1, work_days)

得到結(jié)果:

{'張繼科'}{'體育部'}缺了5次卡;缺卡日期為:{'2022-04-11', '2022-04-29', '2022-04-22', '2022-04-18', '2022-04-21'}
{'楊紫'}{'歷劫部'}缺了1次卡;缺卡日期為:{'2022-04-20'}
{'劉詩(shī)雯'}{'體育部'}缺了2次卡;缺卡日期為:{'2022-04-18', '2022-04-28'}

結(jié)果中的數(shù)據(jù)是用填報(bào)人、填報(bào)部門(mén)、缺卡次數(shù)、具體的缺卡日期進(jìn)行拼接展示的。會(huì)以csv的形式存放到指定文件夾中。

如果需要把姓名、部門(mén)、缺卡次數(shù)等信息分開(kāi),可以在excel中按特定條件分列,或調(diào)整一下代碼進(jìn)行實(shí)現(xiàn)。

本文開(kāi)頭的exe文件生成方法,可以參考下文

Pinstaller(Python打包為exe文件)

之前自己把 Python 文件打包成 exe 的時(shí)候,折騰了很久,本文將詳細(xì)地講述如何快速生成在不安裝 Python 的電腦上也能執(zhí)行的文件

1. 在 prompt 中運(yùn)行 pip install pyinstaller , 安裝 pyinstaller 庫(kù)

2.  在 prompt 中運(yùn)行 where pyinstaller 

3.  找到待打包文件存放的路徑

把要打包的文件放到找到的路徑 

C:\Users\Administrator\Anaconda3\Scripts 中 (我的路徑是這個(gè),你就按照第二步的路徑)

4.  調(diào)用 cmd 窗口

把待打包文件放在

C:\Users\Administrator\Anaconda3 \Scripts 目錄下,在該文件夾中按shift+鼠標(biāo)右鍵 , 點(diǎn)擊 在此處打開(kāi)命令窗口 調(diào)用 cmd 

5.  在 cmd 中輸入 pyinstaller -F  文件名

例子:打包 Python 繪制皮卡丘的視頻,在cmd中輸入 pyinstaller -F  pkq_1.py

即可生成普通圖標(biāo)的exe可執(zhí)行文件。

6.  生成 exe 文件

可以在路徑

C:\Users\Administrator\Anaconda3\Scripts 下的 dist 文件夾中找到打包好的exe文件(即不用安裝 Python 也可以運(yùn)行的文件)。

這樣生成的文件圖標(biāo)是標(biāo)準(zhǔn)固定格式,如果想生成特定特定形狀的圖標(biāo)需要用第7點(diǎn)中的語(yǔ)句。

7.  生成自定義形狀的圖標(biāo),在cmd中輸入:pyinstaller -i  ico路徑 -F xxxxx.py

例子: 打包  Python 繪制皮卡丘視頻的py文件,在cmd中輸入 (注: 我把ico圖標(biāo)和待打包文件放到一個(gè)文件夾下了, 所以直接輸入了ico的名字)

pyinstaller?-i??pikaqiu2.ico?-F?pkq_1.py

生成圖標(biāo)是皮卡丘形狀的exe文件。

我在生成exe的過(guò)程中一直有報(bào)錯(cuò),后面在網(wǎng)上看到方法說(shuō)先在cmd中運(yùn)行pip uninstall matplotlib,再運(yùn)行生成exe的語(yǔ)句就不會(huì)報(bào)錯(cuò)。

按網(wǎng)上方法真成功了,雖然沒(méi)有明白原理,但還是非常感謝!如果你在打包的時(shí)候沒(méi)有報(bào)錯(cuò),還是不建議刪除matplotlib庫(kù)。

到此這篇關(guān)于Python實(shí)現(xiàn)自動(dòng)化處理每月考勤缺卡數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python處理考勤缺卡數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python算法深入理解風(fēng)控中的KS原理

    python算法深入理解風(fēng)控中的KS原理

    這篇文章主要為大家介紹了python算法深入理解風(fēng)控中的KS原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • python讀取txt文件并取其某一列數(shù)據(jù)的示例

    python讀取txt文件并取其某一列數(shù)據(jù)的示例

    今天小編就為大家分享一篇python讀取txt文件并取其某一列數(shù)據(jù)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python使用type關(guān)鍵字創(chuàng)建類步驟詳解

    Python使用type關(guān)鍵字創(chuàng)建類步驟詳解

    在本文里我們給讀者們整理了關(guān)于Python如何使用type關(guān)鍵字創(chuàng)建類的相關(guān)知識(shí)點(diǎn),需要的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • pyqt5 實(shí)現(xiàn)多窗口跳轉(zhuǎn)的方法

    pyqt5 實(shí)現(xiàn)多窗口跳轉(zhuǎn)的方法

    今天小編就為大家分享一篇pyqt5 實(shí)現(xiàn)多窗口跳轉(zhuǎn)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 超詳細(xì)Python解釋器新手安裝教程

    超詳細(xì)Python解釋器新手安裝教程

    這篇文章主要介紹了超詳細(xì)Python解釋器新手安裝教程,文中有非常詳細(xì)的圖文示例,對(duì)不會(huì)安裝python解釋器的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • Django rest framework工具包簡(jiǎn)單用法示例

    Django rest framework工具包簡(jiǎn)單用法示例

    這篇文章主要介紹了Django rest framework工具包簡(jiǎn)單用法,結(jié)合匿名訪問(wèn)控制的具體實(shí)例分析了Django rest framework工具包的注冊(cè)、路由設(shè)置、視圖、權(quán)限控制、配置等相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • python搜索指定目錄的方法

    python搜索指定目錄的方法

    這篇文章主要介紹了python搜索指定目錄的方法,涉及Python操作目錄的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python中的八大核心語(yǔ)句你知道幾個(gè)呢?

    Python中的八大核心語(yǔ)句你知道幾個(gè)呢?

    Python?是一種代表簡(jiǎn)單思想的語(yǔ)言,其語(yǔ)法相對(duì)簡(jiǎn)單,很容易上手。本文精心篩選了Python中的八大核心語(yǔ)句,快來(lái)看看你都掌握了幾個(gè)呢
    2023-02-02
  • python將天氣預(yù)報(bào)可視化

    python將天氣預(yù)報(bào)可視化

    大家好,本篇文章主要講的是python將天氣預(yù)報(bào)可視化,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python基礎(chǔ)之time庫(kù)詳解

    Python基礎(chǔ)之time庫(kù)詳解

    這篇文章主要介紹了Python基礎(chǔ)之time庫(kù)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評(píng)論