Skip to content
New Workbook
Sign up
2023-02 Dataset Presensi
import pandas as pd
import numpy as np
days_size = 28
days = range(1,days_size + 1)
year_month = '2023-02'

KAMPUS SAMPUL

sampul = pd.read_excel('2023-02-presensi-sampul.xls', header= 1)
sampul['Waktu'] = sampul['Tanggal'].str[6:10] + "-" + sampul['Tanggal'].str[3:5] + "-" + sampul['Tanggal'].str[0:2] + " " + sampul['Jam']
sampul['Waktu'] = pd.to_datetime(sampul['Waktu'])
sampul.drop(['Tanggal scan','Tanggal', 'Jam','NIP','Jabatan','Departemen','Kantor','Verifikasi','I/O','Workcode','SN','Mesin'], axis= 1, inplace= True)
sampul.columns = ['ID','Nama','Waktu']
print(sampul.shape)
sampul.head()

KAMPUS SINGKARAK

singkarak = pd.read_excel(
    '2023-02-presensi-singkarak.xls',
    'Catatan',
    header= 3
)


column_names = list(range(1,days_size + 1))
column_names.insert(0, 'Dept.')
column_names.insert(0, 'Nama')
column_names.insert(0, 'ID')
column_names.insert(len(column_names), 'error')
singkarak.columns = column_names

ids = []
names = []
times = []

for index, row in singkarak.iterrows():
    for i in days:
        if not pd.isna(row[i]):
            check = row[i].split('\n')
            ids.append(row['ID'])
            names.append(row['Nama'])
            checkin = year_month + '-' + str(i).rjust(2,'0') + ' ' + check[0]
            times.append(checkin)

            if check[1]:                
                ids.append(row['ID'])
                names.append(row['Nama'])
                checkout = year_month + '-' + str(i).rjust(2,'0') + ' ' + check[1]
                times.append(checkout)
            
singkarak_converted = pd.DataFrame(
    {
        'ID': ids,
        'Nama': names,
        'Waktu': times
    }
)
singkarak_converted['Waktu'] = pd.to_datetime(singkarak_converted['Waktu'])
print(singkarak_converted.shape)
singkarak_converted.head()

FINALISASI

import datetime as dt
import pytz as tz
ct = dt.datetime.now(tz.timezone('Asia/Jakarta'))
timestamp = ct.strftime("%Y-%m-%d-%H-%M-%S")

presensi = pd.concat([sampul, singkarak_converted])
#presensi.sort_values(by=['ID', 'Waktu'], inplace= True)

print(presensi.shape)
presensi.to_csv(timestamp + '-presensi-bersihx.csv', index= False)
presensi[presensi['ID'] == 108]