美文网首页
疫情防控工作自动化办公(一)

疫情防控工作自动化办公(一)

作者: 不懂球的2大业 | 来源:发表于2022-05-24 23:21 被阅读0次

1.背景

  • 笔者最近调整了科室,分工也随之调整。除了承担的相关领域经济分析工作之外,还需要接管外卖领域的疫情防疫督导工作。
  • 外卖领域的疫情防疫督导具体工作步骤为:
1.与大数据局对接,接收到前一天没有完成核酸检测的人员名单 
2.按照所属平台分类,将未做核酸人员名单下发至各平台联系人
3.督促各平台联系人完成补采统计,并对未补采的原因进行汇总 
4.向大数据局总结反馈
  • 经过前两天的工作体会,外卖防疫工作难度不大,但是过程繁琐,且具有利用现有编程工具进行自动化提升效率的空间。

2.改进点

  • 步骤2与步骤3可实现自动化办公。每日收到的名单如下图所示: 每日名单

2.1对于步骤2的改进

  • 目前本区有7大外卖平台:分别是美团,饿了么,叮咚买菜,达达,盒马生鲜,大润发A,大润发B。其中COMPANY字段是各个平台的外包外卖配送公司,需要根据COMPANY字段将每一条数据,匹配到7大平台。之前的做法是参照一张对应字典,根据字典逐条人工匹配输入。笔者认为可以利用数据库的连接操作,实现自动化匹配。
  • 具体思路为填写一个COMPANY-平台字典,之后读入每日数据,利用左连接操作,实现COMPANY-平台匹配。实现代码如下:
import pandas as pd
import datetime

# 读取每日数据
data = pd.read_excel("data.xls")
# 筛选出每日不达标的人员
un_satisfy = data[data["isDabiao"] == "不达标"]
# 读入COMPANY-平台字典
map_company = pd.read_excel("map1.xls")
# 左连接操作,结果会增加平台字段(real_company)
result = pd.merge(left = un_satisfy,right = map_company,on = "company")
# 根据平台进行分组
group_by_res = list(result_type)
# 每个平台的数据按照格式命名并保存
for item in group_by_res:
    today = datetime.date.today()
    i = datetime.datetime.now()
    item[1].to_excel(excel_writer="%s%s%s%d.xlsx" % (str(today),str(i.strftime('%p')),item[0],len(item[1])), sheet_name='sheet_1')
  • 具体实现输出结果如下图,文件命名按照:日期-上下午-所属平台-人数的格式


    格式化输出的结果

2.2对于对于步骤3的改进

  • 将数据按照平台分好之后,发给7个平台的负责人,由他们督促未做核酸的人员并进行填写未做的原因,之后汇总反馈给我。我需要根据汇总的情况进行整理,并总结生成类似如下的一段话:
应采1603人,实采1511人。经系统核实92人未采,其中41人已补采,39人离职,4人因接种第三针疫苗48小时内无法检测,2人因受伤居家修养,6人已离苏。
  • 其中比较繁琐的在于需要逐条对每个人未做的原因进行分析归类,类别有:“已补做,已离职,打疫苗未做,因受伤、手术居家医院未做,请假回老家未做,请假未做”这7类,因为每个人填写的都不规范,所以统计起来比较繁琐。


    未做原因反馈
  • 笔者利用自然语言处理对原因进行分析归类,具体原理可参考利用xlwings库,实现文件名与excel表格内容的极大似然匹配标注(二)
  • 实现代码如下:
import pandas as pd
import os
from sklearn.decomposition import sparse_encode
import xlwings as xw
from jieba import lcut
from gensim.similarities import SparseMatrixSimilarity
from gensim.corpora import Dictionary
from gensim.models import TfidfModel
import numpy as np

def make_labels(labels):
    labels = [lcut(label) for label in labels]
    dictionary = Dictionary(labels)
    num_features = len(dictionary.token2id)
    corpus = [dictionary.doc2bow(label) for label in labels]
    return dictionary,corpus

def make_choice_word_index(key_word,dictionary,corpus):
    kw_vector = dictionary.doc2bow(lcut(key_word)) 
    tfidf = TfidfModel(corpus)
    tf_texts = tfidf[corpus]
    num_features = len(dictionary.token2id)
    sparse_matrix = SparseMatrixSimilarity(tf_texts,num_features)
    tf_kw = tfidf[kw_vector]
    similarities = sparse_matrix.get_similarities(tf_kw)
    index = np.argmax(similarities)
    return index

labels = ["已做","已离职跑路","打疫苗未做","因受伤、手术居家医院未做","请假回老家未做","请假未做"]

dictionary,corpus = make_labels(labels)

data = pd.read_excel("data.xlsx")

lst = list(data.loc[:,"备注"])

count = [0,0,0,0,0,0]

for word in lst:
    index = make_choice_word_index(word,dictionary,corpus)
    count[index] = count[index] + 1

print("总计:",sum(count),"人。",
      "已补采:",count[0],"人 ",
     "离职:",count[1],"人 ",
      "因接种第三针疫苗48小时内无法检测:",count[2],"人 ",
      "因受伤、手术居家休养未做:",count[3],"人 ",
      "离苏:",count[4],"人 ",
      "请假未做:",count[5],"人 "
     )

相关文章

网友评论

      本文标题:疫情防控工作自动化办公(一)

      本文链接:https://www.haomeiwen.com/subject/wggdprtx.html