title=

EXCEL统计新方法

职场中,不管是运维还是开发还是项目经理或者财务,都可能存在茫茫多的excel去做一些统计处理。恐怖的是,可能统计方式随着需求变化也会经常修改修正。作为职员,接到统计需求可能很模糊,一周、当周,反正通常没有具体时间节点,或者因其他原因。随之变化会导致不断修改我们的统计方式。另外我自己的记性并不是很好,面对简单的统计还能记得住,当面对复杂点的统计,可能到下次就忘记之前怎么统计的了。在多方面的原因下,迫使我有动力去开发了一款尽可能的适应不同数据表格、不同统计需求的Python小程序。

小程序介绍

代码逻辑

excel_logic

整套逻辑可以循环运行,意味着可以创建多份规则配置表的Sheet,来批量统计!相当省事!这是我的代码链接

目录介绍

  • src : 源代码目录

    • data_interaction : OS、GUI等逻辑代码目录
    • excel_process : 处理Excel相关逻辑代码目录
    • match_process : 对应统计规则配置表逻辑代码目录
  • input : 统计规则配置表存放位置
  • output : 统计后输出表存放位置

使用说明

1、环境准备
  • 提前安装Git工具,最新版即可
  • 提前安装Python环境,最好是V3.10以上版本
2、下载小程序
git clone https://github.com/wuxingyu090/excel_statistics.git  # 也可直接访问网站下载V1.0.1 Releas压缩包
cd excel_statistics/  # 进入小程序目录下
pip install -r requirements.txt  # 安装依赖包
3、准备需要统计的Excel数据表格
  • 将数据文件放置excel_statistics目录下
4、规则配置

在input目录下的config-keycount.xlsx 即为规则配置表。其中每个Sheet(除说明Sheet),都是单独一套规则配置策略。Sheet名称可自定义,但需要与main.py 文件中rule_table_list列表数据同时修改成自定义名称,才能执行程序。(因为考虑到可能有存在未配置完成的规则配置策略无需运行的情况)后续这个可能会做成Gui进行选择。如下配置样例:

| count_name | table | sheet | l1_field | l1_match | l2_field | l2_match | l3_field | l3_match | l4_field | l4_match | l5_field | l5_match |
| ---------- | ------------------------ | ---------- | ------------ | ---------- | -------- | -------- | -------------- | ----------------------- | -------------- | ------------------------------------------------------------ | -------- | -------- |
| TEST1故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | 2021-04-26 | | | | | | | | |
| TEST2故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | 2021-04-26 | 故障级别 | Z2 | 故障主题(必填) | 广州百科云A_X86_天河MIX | 故障主题(必填) | 半双工模式 | | |
| ASO3故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | %H,22-08 | 故障级别 | =,Z2 | 故障主题(必填) | 广州百科云A_X86_天河MIX | 故障主题(必填) | ['ecs-yaochi.EcsGrandcanalDashboard服务提供异常','实例切换'] | | |
| ADB4故障 | 告警模板信息2172621.xlsx | 告警单列表 | 故障发生时间 | %H,22-08 | 故障级别 | =,Z1 | 故障主题(必填) | 广州百科云A_X86_天河MIX | 故障主题(必填) | Cgroup挂载检查 | | |

  • Count_name列:统计名称可自定义,相同规则配置sheet中,每个Count_name名称不可相同。
  • Table列:填入放置excel_statistics目录下数据表格,如有多份数据表格,则填写对应不同的表名。可从多份数据表中进行统计。
  • sheet列:填入对应表格中需要统计数据的Sheet名称
  • l?_field:第几层级的字段名,填入需要统计数据的Sheet中的字段
  • l?_match:第几层级的匹配,填入匹配规则。列表和字符串默认使用模糊匹配,带有'>,','<,','<>,','=,','%D,','%H,','%MI,'此类前缀表达式会进入对应规则匹配。
  • 如上 l?_field 和 l?_match 样例规则配置表格中只到了l10 。(我感觉应该够了,不够可往后顺延)

    # main.py 文件
    def run(show):
        rule_table_list = ['count_rule', 'count_rule1', 'count_rule2']  
        #上面右侧列表中count_runle* 替换成对应规则配置表中自定义sheet名称
        config_keycount = 'config-keycount'
        for rule_table in rule_table_list:
            chart_product(config_keycount, rule_table)
            if show:
                show_chart(rule_table)
            else:
                pass
5、运行程序
python main.py --help  # 查看帮助文档
Usage: main.py [OPTIONS]
Options:
  --show BOOLEAN  show 参数,默认False,不直接输出图表
  --help          Show this message and exit.

python main.py  # 统计数据以及图表输出至输出表

python main.py --show True # 统计数据以及图表输出至输出表,同时直接界面展示图表
6、查看统计结果

:::: column
::: column-left

统计汇总表

:::
::: column-right

图表展示

:::
::::

后续实现

当前V1版本Excel统计小程序还有很多不足,比如没有Gui,配置不是很方便,自定义匹配规则还比较少,还待后续逐步叠加更新。但因个人时间并不多。锦上添花的新功能可能跟新会比较缓慢!不过如果有使用上的Bug,还请提交Issue,小编博主会在一周内答复!同时也希望有人帮忙一起迭代新的统计规则功能!

:::: column
::: column-left

公众号二维码

:::
::: column-right

个人博客二维码

:::
::::

客官,欢迎光临本站!路途遥远,常进来看看!

本文由mdnice多平台发布


吴星宇
1 声望1 粉丝

运维技术分享