EXCEL统计新方法
职场中,不管是运维还是开发还是项目经理或者财务,都可能存在茫茫多的excel去做一些统计处理。恐怖的是,可能统计方式随着需求变化也会经常修改修正。作为职员,接到统计需求可能很模糊,一周、当周,反正通常没有具体时间节点,或者因其他原因。随之变化会导致不断修改我们的统计方式。另外我自己的记性并不是很好,面对简单的统计还能记得住,当面对复杂点的统计,可能到下次就忘记之前怎么统计的了。在多方面的原因下,迫使我有动力去开发了一款尽可能的适应不同数据表格、不同统计需求的Python小程序。
小程序介绍
代码逻辑
整套逻辑可以循环运行,意味着可以创建多份规则配置表的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多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。