python


11、pandas-record

<pre><code> import pandas as pd import time import hashlib import xlsxwriter def get_timeStamp(time_str): #将其转换为时间数组 timeStruct = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") #转换为时间戳: timeStamp = int(time.mktime(timeStruct)) return timeStamp def it_write_excel(): # ''' # 读取变量 book = xlsxwriter.Workbook('all_record.xlsx') sheet = book.add_worksheet('sheet1') # 设置sheet表单元格列宽 sheet.set_column("A:A", 10) # 欧洲 sheet.set_column("B:B", 14) # 商品名称 sheet.set_column("C:C", 14) # 正面图 sheet.set_column("D:D", 15) # 货号 sheet.set_column("E:E", 20) # 欧洲零售价 sheet.set_column("F:F", 25) # 商品链接 sheet.set_column("G:G", 25) # 商品链接 sheet.set_column("H:H", 25) # 商品链接 sheet.set_column("I:L", 14) # 商品链接 # 设定整个sheet表的单元格的格式 property = { 'font_size': 11, # 字体大小 'bold': False, # 是否加粗 'align': 'center', # 水平对齐方式 left 'valign': 'vcenter', # 垂直对齐方式 'font_name': u'微软雅黑', 'text_wrap': False, # 是否自动换行 } cell_format = book.add_format(property) # 设置sheet表单元格行高 sheet.set_row(0, 22) # 设置第一行的高度为22 # 在向单元格中写入内容时,加上单元格样式 # 插入第一行 sheet.write(0, 0, '名字', cell_format) sheet.write(0, 1, '休息', cell_format) sheet.write(0, 2, '加班', cell_format) sheet.write(0, 3, '工作', cell_format) sheet.write(0, 4, '周末加班分钟', cell_format) sheet.write(0, 5, '平时加班分钟', cell_format) sheet.write(0, 6, '全部加班分钟', cell_format) sheet.write(0, 7, '全部加班小时', cell_format) sheet.write(0, 8, '正常请假', cell_format) sheet.write(0, 9, '正常出差', cell_format) sheet.write(0, 10, '异常请假出差', cell_format) sheet.write(0, 11, '异常加班期间时间', cell_format) img_format = {'x_offset': 4, # 左右移动 'y_offset': 0, 'x_scale': 0.2, # 缩放比例 'y_scale': 0.19} # 插入爬取it_goods_list信息 row_number = 1 for product in all_add_time_list: sheet.set_row(row_number, 52) # 设置第row_number行的高度为52 sheet.write(row_number, 0, product['名字'], cell_format) # try: # sheet.write(row_number, 0, product['名字'], cell_format) # except Exception as e: # print(product) # print(e) sheet.write(row_number, 1, product['休息'], cell_format) sheet.write(row_number, 2, product['加班'], cell_format) sheet.write(row_number, 3, product['工作'], cell_format) # product['productCode'] sheet.write(row_number, 4, product['周末加班分钟'], cell_format) sheet.write(row_number, 5, product['平时加班分钟'], cell_format) sheet.write(row_number, 6, product['全部加班分钟'], cell_format) sheet.write(row_number, 7, product['全部加班小时'], cell_format) sheet.write(row_number, 8, product['正常请假'], cell_format) sheet.write(row_number, 9, product['正常出差'], cell_format) sheet.write(row_number, 10, product['异常请假出差'], cell_format) sheet.write(row_number, 11, product['异常加班期间时间'], cell_format) # zxg_dict['异常加班期间时间'] row_number = row_number + 1 book.close() # print(download_type + ': 写入EXCEL成功') return None def read_infor(): sheet = pd.read_excel('record0.xlsx') sheet.drop(sheet.index[[0,2]],inplace=True) sheet.drop(sheet.index[[0]],inplace=True) sheet.drop(sheet.index[[0]],inplace=True) sheet.columns = ['name','id','depart','job','work_data','raw_time','time_1','time_2'] # sheet.head(5) time_8_30_str = "2017-11-24 08:30:00" time_9_00_str = "2017-11-24 09:00:00" time_18_00_str = "2017-11-24 18:00:00" time_23_59_str = "2017-11-24 23:59:00" time_8_30 = get_timeStamp(time_8_30_str) time_9_00 = get_timeStamp(time_9_00_str) time_18_00 = get_timeStamp(time_18_00_str) time_23_59 = get_timeStamp(time_23_59_str) names_set = set() name_list = [] if 1: for name in sheet.name.values: hash_title = hashlib.md5(name.encode(encoding='UTF-8')).hexdigest() if hash_title in names_set: continue name_list.append(name) names_set.add(hash_title) all_add_time_list = [] for zxg in name_list: zxg_dict = {} zxg_dict['名字'] = zxg zxg_df = sheet.loc[sheet['name'] == zxg] zxg_df = zxg_df.fillna(0) # zxg_size = int(zxg.size/8) no_work_list_1 = [] no_work_list_2 = [] rest_list = [] add_job_list =[] raw_job_list = [] no_work_list = [] if 2: for index,row in zxg_df.iterrows(): if row['time_1']=='休息' and row['raw_time'] == 0: rest_list.append(row) elif row['time_1']=='休息' and row['raw_time'] != 0: add_job_list.append(row) elif '请假 08:30' in str(row) and '请假 18:00' in str(row): no_work_list_1.append(row) elif '出差 08:30' in str(row) and '出差 18:00' in str(row): no_work_list_2.append(row) elif '请假'in str(row): no_work_list_list.append(row) no_work_list.append(row) elif '出差'in str(row): no_work_list_list.append(row) no_work_list.append(row) else: raw_job_list.append(row) zxg_dict['休息'] = len(rest_list) zxg_dict['正常请假'] = len(no_work_list_1) zxg_dict['正常出差'] = len(no_work_list_2) zxg_dict['异常请假出差'] = len(no_work_list) zxg_dict['加班'] = len(add_job_list) zxg_dict['工作'] = len(raw_job_list) # print('休息:', len(rest_list)) # print('加班:', len(add_job_list)) # print('工作:', len(raw_job_list)) yi_chang_add_time = 0 time_i = '2017-11-24 ' time_o = ':00' for item in no_work_list: if '请假' in str(item['time_1']) and '请假' in str(item['time_1']) == 0: continue raw_time_list = item['raw_time'].split(',') raw_size = len(raw_time_list) t1 = time_i + raw_time_list[0] + time_o t2 = time_i + raw_time_list[raw_size - 1] + time_o t2 = get_timeStamp(t2) t1 = get_timeStamp(t1) if t2 &lt;= time_18_00: continue if t2 == time_23_59: continue yi_chang_add_time = yi_chang_add_time + ((t2 - time_18_00)/60) zxg_dict['异常加班期间时间'] = yi_chang_add_time # 周末 if 3: weekend_true_add_job_min = 0 for item in add_job_list: # print(item) # print(type(item)) time_i = '2017-11-24 ' time_o = ':00' raw_time_list = item['raw_time'].split(',') raw_size = len(raw_time_list) t1 = time_i + raw_time_list[0] + time_o t2 = time_i + raw_time_list[raw_size-1] + time_o # if t1 &lt; time_8_30: # # 8点半以前来 多算90分钟 # true_add_job_min = int((get_timeStamp(t2) - get_timeStamp(time_8_30))/60) - 90 # else: # # 9点以后是多少就是多少 # true_add_job_min = int((get_timeStamp(t2) - get_timeStamp(t1)) / 60) if get_timeStamp(t1) &lt; time_8_30: true_add_job_min = int((get_timeStamp(t2) - get_timeStamp(time_8_30_str)) / 60) - 90 else: true_add_job_min = int((get_timeStamp(t2) - get_timeStamp(t1))/60) - 90 weekend_true_add_job_min = weekend_true_add_job_min + true_add_job_min zxg_dict['周末加班分钟'] = weekend_true_add_job_min # print(weekend_true_add_job_min,'min') # print(weekend_true_add_job_min/60,'hour') # 平时 if 4: raw_job_add_job_time_list = [] for item in raw_job_list: time_i = '2017-11-24 ' time_o = ':00' if item['raw_time'] == 0: continue try: raw_time_list = item['raw_time'].split(',') except Exception as e: print(item) print(item['raw_time']) print(e) continue raw_size = len(raw_time_list) t1 = time_i + raw_time_list[0] + time_o t2 = time_i + raw_time_list[raw_size-1] + time_o t2 = get_timeStamp(t2) t1 = get_timeStamp(t1) if t1 &lt; time_8_30 and t2 &gt; time_18_00: raw_job_add_job_time_list.append(t2 - time_18_00) if t1 &gt; time_8_30 and t1 &lt; time_9_00 and t2 &gt; time_18_00: need_add_time = t1 - time_8_30 raw_job_add_job_time_list.append(t2 - need_add_time - time_18_00) if t1 &gt; time_9_00 and t2 &gt; time_18_00: need_add_time = t1 - time_9_00 raw_job_add_job_time_list.append(t2 - 3*need_add_time - time_18_00) if 5: raw_job_true_add_job_min = 0 for item in raw_job_add_job_time_list: raw_job_true_add_job_min = raw_job_true_add_job_min + item zxg_dict['平时加班分钟'] = int(raw_job_true_add_job_min/60) # print(int(raw_job_true_add_job_min/60),'min') # print((raw_job_true_add_job_min/3600),'hour') all_add_job_time = int(raw_job_true_add_job_min/60) + weekend_true_add_job_min + yi_chang_add_time zxg_dict['全部加班分钟'] = all_add_job_time zxg_dict['全部加班小时'] = all_add_job_time/60 # print(all_add_job_time) # print(all_add_job_time/60) # print(zxg_dict) # no_work_list_list.append(no_work_list) all_add_time_list.append(zxg_dict) return all_add_time_list no_work_list_list = [] all_add_time_list = read_infor() # for item in no_work_list_list: # if '出差 08:30' in str(item) # from pandas.core.frame import DataFrame # data = DataFrame(no_work_list_list) # names_set = set() # name_list = [] # if 1: # for name in data.name.values: # hash_title = hashlib.md5(name.encode(encoding='UTF-8')).hexdigest() # if hash_title in names_set: # continue # name_list.append(name) # names_set.add(hash_title) # no_work_list_1 = [] # no_work_list_2 = [] # need_check_list = [] # for zxg in name_list: # zxg_dict = {} # zxg_dict['名字'] = zxg # zxg_df = data.loc[data['name'] == zxg] # zxg_df = zxg_df.fillna(0) # # for index, row in zxg_df.iterrows(): # if '请假 08:30' in str(row) and '请假 18:00' in str(row): # no_work_list_1.append(row) # elif '出差 08:30' in str(row) and '出差 18:00' in str(row): # no_work_list_2.append(row) # else: # need_check_list.append(row) # # need_check_df = DataFrame(need_check_list) # need_check_df.to_excel('need_check.xls',index=0) # data.to_excel('sheet_1.xls',index=0) # data.to_excel('sheet_2.xls') # print(data.head(5)) # print(no_work_list_list) # print(len(no_work_list_list)) it_write_excel() ## ```</code></pre>

页面列表

ITEM_HTML