吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1711|回复: 11
收起左侧

[Python 原创] 用PYTHON写的职场统计用的小工具,大家自行改进

  [复制链接]
yibrother 发表于 2024-6-10 13:44
本帖最后由 yibrother 于 2024-6-10 17:04 编辑

背景:打工人现在天天搞统计,本人面对的部门单位非常多,每一次安全生产统计的内容超级多,由于上交的材料都是模板统一的独立的内容,因此需要汇总,如安全生产月活动,类似下面的表
问题背景,收集各个部门和单位的数据.jpg
如果有人说大家直接用在线表格来做,那么表格的列非常的多,如教育培训列,总共有17个空格需要填写,那就至少需要17列,显然大家上交的材料使用上图的类型比较好。


目的:将上述表格的内容按照列进行汇总,每一列对应的括号的所有的数据相加,得到最终需要的数据


步骤:第一步:按列提取括号内的数据(使用正则表达式RE);
第二步:将提取到的数据转成表格(dateframe);
第三步:将上述数据求和汇总,转成一个行(series);
第四步:将上述的行跟格式模板相对应,形成满足要求的格式文本




主要是使用PYTHON写的代码,主要是用的pandas和re模块


[Python] 纯文本查看 复制代码
import re
import pandas as pd



def kuohao_to_list(st="组织观看警示教育片( 1)场,参与( 4)人次"):
    st=st.replace(" ","")
    pattern = r"\((.*?)\)"
    ls = re.findall(pattern, st)
    cl_ls = [text.replace(" ", "") for text in ls]
    cl_ls = [ "0.0" if len(item) == 0 else item for item in cl_ls]
    cl_ls = [float(item) for item in cl_ls if item]

    # print(len(ls))
    # print(cl_ls)
    return cl_ls

def list_to_text(leixing,list_values):
    # 宣贯活动
    st0 = '''
    1.组织开展宣讲活动({})场,参与({})人次;
    2.组织专题研讨({})场、集中宣讲({})场、辅导报告({})次,累计参与({})人次;
    3.主要负责人讲授安全公开课({})场,参与({})人次。
    '''
    #教育培训
    st1='''
    1.开展宣教培训活动({})场,参与({})人次;
    2.组织安全培训({})场,参与({})人次;
    4.张贴或悬挂安全标语、横幅、挂图等({})份;
    5.组织安全知识答题竞答活动({})场,参与({})人次;
    6.组织开展“安全宣传咨询日”现场活动({})场、参与({})人次,网络直播({})场、({})人观看;
    7.开展安全生产“大家谈”“班前会”“等活动({})场,参与({})人次;
    8.组织“畅通生命通道”活动({})场,参与({})人次;
    9.二十项反措和施工反措宣贯({})次,参与({})人次。
    '''
    #警示教育
    st2='''
    1.组织观看警示教育片({})场,参与({})人次;
    2.举办警示教育展({})场,研讨分析会({})次,累计参与({})人次。
    '''
    #专项行动
    st3='''
    1.企业主要负责人带头开展隐患排查整治({})次,发现问题({})项,已完成整改({})项;
    2.开展“四不两直”({})次,曝光重大隐患和突出问题({})个;
    3.全员安全隐患大家拍({})人次,发现安全隐患({})个;
    4.消防专项检查({})次,发现问题({})项,已完成整改({})项。
    '''
    #应急演练
    st4='''
    1.组织应急与安全培训({})场,参与({})人次;
    2.开展从业人员自救互救技能培训({})场,参与({})人次;
    3.组织应急演练({})次,参与({})人次,宣传报道({})条;
    4.企业主要负责人带头参加安全应急演练({})次,总参与({})人次。
    '''
    #行业活动
    st5='''
    1.参与“避险逃生训练营”短视频新媒体展播({})个;
    2.参与“人人讲安全个个会应急”网络知识竞赛({})人,答题({})人次;
    3.2024年“安全生产月”学习行动({})人次,取得证书({})个;
    4.向主流媒体投稿({})件,刊登({})件,获奖({})次。
    '''
    #特色活动
    st6='''
    活动名称({}),组织({})场/次,参与({})人次。
    '''

    keys  = ["宣贯活动", "教育培训", "警示教育", "专项行动", "应急演练", "行业活动", "特色活动"]
    values = [st0, st1, st2, st3, st4, st5, st6]
    result_dict = dict(zip(keys, values))
    text=result_dict[leixing]
    # 使用 str.format 方法
    filled_text = text.format(*list_values)

    # print(filled_text)
    return filled_text



excel_file_path = '汇总.xlsx'

# 创建新的 DataFrame 存储匹配结果
sum_df = pd.DataFrame()
huizong_df = pd.DataFrame()

# 读取整个 Excel 文件
df = pd.read_excel(excel_file_path,header=[0],index_col=None,sheet_name="Sheet1")

print(df.columns )

cls=["宣贯活动",        "教育培训",        "警示教育",        "专项行动",        "应急演练",        "行业活动",        "特色活动"]
huizong_string=""

for cl in cls:
    print(cl)
    ndf= df[cl]
    ls= ndf.apply(kuohao_to_list) #获取括号的内容并转换成list
    ls_list = ls.tolist()

    sum_df = pd.DataFrame(ls_list)
    sums=sum_df.sum()  #求和每一列
    sums.name = cl  # 为新行设置一个名称
    string_text = list_to_text(cl, sums)
    string_text=string_text.replace(".0","")

    print(string_text)
    huizong_string +=string_text

    huizong_df = huizong_df._append(sums)

    sum_df.to_excel(cl+'.xlsx', index=True)


huizong_df.to_excel('汇总1.xlsx', index=True)

with open("信息统计.txt","w",encoding='utf-8') as f:
    f.write(huizong_string)  



















上述代码中把上述一到四步所有过程资料全部保存了本地问题,各位如果不需要执行过程,直接注释掉


最终的成果
第二步: 单列拆分汇总.jpg
第三步: 汇总的部分.jpg


第四步: 汇总的txt.jpg


过程文件对比:如果不要处理过程,只需要一个汇总的txy文本文件,过程只是帮助大家理解的 前后文本.jpg


全文到此结束,本文主要是给大家提供思路,需要一定的编程基础,虽然我提供的办法不是最简单的办法,但是目前我能想到的提高效率的思路就这样了,打工人不易,各位如有更好的思路,欢迎交流提升

免费评分

参与人数 6吾爱币 +13 热心值 +6 收起 理由
helian147 + 1 + 1 热心回复!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
timeni + 1 + 1 用心讨论,共获提升!
sxhytds + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vethenc + 2 + 1 谢谢@Thanks!感谢分享,非常实用的软件!
ftg512 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wooailein 发表于 2024-6-11 11:57
挺好的,不过其实流程还可以优化,用表格文档统计和沟通效率感觉都要低很多,用更方便的可视化工具统计会更好,当然,部门多,为了看起来工作繁忙的景象可能有时间比效率更受领导喜欢
vethenc 发表于 2024-6-10 23:10
兄弟,你这个表格就设置错了,让他们填表的时候就应该直接是数字,类似统计年报的那种表格。反正我是没见过这种表格,折腾自己。下达文件的目的是方便自己
asd121ddw 发表于 2024-6-10 19:43
ZhjhJZ 发表于 2024-6-10 20:49
这是专业人士写的专门工具啊,一般人都是用个Excel表了
 楼主| yibrother 发表于 2024-6-10 22:02
ZhjhJZ 发表于 2024-6-10 20:49
这是专业人士写的专门工具啊,一般人都是用个Excel表了

工作中属于这类的问题(文本中提取出来特定的值) 大家可以直接借用代码  生成相关的成果
ChengSJ 发表于 2024-6-11 08:49
初看写的挺简洁的
zf19871001 发表于 2024-6-11 08:59
总有一些部门会把你的格式改了 然后得挨个检查
HapplyLin 发表于 2024-6-11 17:18
真是技多不压身
royiiechan 发表于 2024-6-12 00:09
国网吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表