2023-09
21

找事干

By xrspook @ 8:59:11 归类于: 烂日记

整个科室的人都出去培训了,除了我,所以一整天下来很安静,几乎没有人过来打搅我。只有一个过来找出去培训的那些人,神奇的是昨天单位微信群上也很安静,没有经常闪动。为什么会如此平静呢?

摸鱼这种事情有别人在跟没别人在对我来说没有区别,当我要摸鱼的时候,谁也阻止不了我。虽然有时摸鱼的时候不得不东躲西藏。可当我要认真的时候,同样也是没人能阻止我,不管那是上班还是下班,是白天还是半夜,只要我想干下去,哪怕那跟加班费没有半点关系,我也不会停下来,因为那是我想要干的事。

四周很安静,没有任何的干扰,也没有什么特殊的任务突然降临,所以我该做些什么呢?在做完平时应该做的那些事以后,我应该做些什么呢?摸鱼什么的摸多了也会觉得无聊,所以还是要找一些正经事干一下。有事可干的时候,你就只管去干,干就完了,但是当你无事可干又得找些事干的时候,的确挺烦恼。我觉得这个烦恼对我来说已经存在了好长一段时间。究其原因是有些时候你根本打不起去干某事。一方面你没什么事干,另一方面是有些事你或许可以干,但是你不想去干。这两个因素凑起来就变成了一个死循环,人就是在这个死循环里。慢慢地耗费着生命。

前天下午,我突然想到要以另外一个数据模板写一个VBA的汇总脚本。汇总脚本之前我已经写过,而且已经用了一个入户周期,2.1万吨的玉米入库绝大多数都是通过那个东西生成的,一直都没有问题,所以根据我的数据模板生成那个东西是完全没有毛病的,但如果我换了一个数据模板呢?我自己的数据模板没有毛病,其中一个很重要的原因是里面一些关键参数的设定我是以我的模板的某些数据量身定做的,但如果我换了一个模板我就得把某些数据转换过来。比如把两列的数据有条件地合并为一列,这是可以预知的,另外一些不可预知的我只能尽可能的把我想到的都做出来。当我遇到这个问题的时候。我感觉明明很简单的东西,为什么就要搞出那么多的花样呢?为什么这个不应该随心所欲的东西,实际上就这般随心所欲呢?大家都是说根据某个国标去做的列表,但实际上用起来的时候五花八门。我自己用的那个转换脚本是完全根据我的那些乱七八糟理出来的,但我不知道别人的乱七八糟到底乱成一个什么模样。这是一个无底洞,我自己的处理方式是嵌套很多层replace,但显然对小白来说,这样的操作非常不友好。所以在新的汇总脚本里,我采取的方式是建立一个索引,把集合五花八门的索引得先建立好了,然后我再以左外的方式匹配某些关键词,把所有的内容给关联上去。因为是开放的,可以很容易进行编辑,而且不需要他们懂得任何公式嵌套技术。这是我能想到的一个很大的坑,但我觉得还有一些更大的坑隐藏在阴暗处,比如别人生成汇总的那个数据模板不是我理解的那一款,他们需要在那个模板上手动编辑才能出结果。这就意味着索引的方式得发生变换了。还有一个就是万一在另外一个参数的地方,他们那个基础数据表还得进行某些修改才是他们汇总表的那个格式,那么那个地方也需要进行加工。综上所述,我觉得其实这些坑可以完全不存在,但问题就是设计软件的人和使用软件的人思路不一致,使用软件的人没有考虑到以后会被要求进行这样的操作,所以一开始默认套用了某些增加参数的方式。最终结果是他们得绕一大个圈、人肉查找好几个表才最终汇总出一个结果。这样就会导致汇总出错的概率提高,同时也会让人没有必要地忙乎一大轮,而且是天天都得这么忙。

如果把这些事情都理清了,根本不是问题,但可以肯定的是,不是所有人都愿意在这个理清上面花时间、把这一整套人肉的操作变成自动化。因为从根本上说大部分的他们只是为了仅仅完成任务,而从来没想过要把那做得更好、做到极致。

2023-07
29

最后的小计也出来了

By xrspook @ 10:03:24 归类于: 烂日记

又花了大半个下午的时间,我把python跨表查询版最后的那个小计功能也开发出来了。其实前一天晚上我已经找到了类似的案例,只要按研究透的那个东西,接着往我自己那里套就可以了。我大概明白里面用到的公式到底是干什么用的,但是把它们套起来了以后,我发现用在我的那里无论如何都不对,所以我就在案例里不断套脚手架,不断地做注视去掉东西。最终发现让我失败的原因是我的那个dataframe是没有索引的,这就让我后面折腾了好长一段时间。

要在dataframe里加小计,首先需要对进行小计的项目进行分组处理。前一天我已经了解过,这样分组出来结果就只是那些聚合的数据。这些聚合的数据如果你不需要带入特殊的分组词,那么你跟原数据合并,然后根据你的分组项目名排序,小计就会合体到原来的dataframe里。如果你要加入小计这样的词语,你就得虚拟新增一列以非分组项目为名称的列名,内容就是小计之类的词。这样的分组结果我不知道为什么那个案例最后要设定以分组项目为索引,因为我在折腾那个案例的时候发现做不做这一步出来的结果没区别。

最最关键,让我折腾半天的根本原因是我要加小计的那个dataframe在从Excel读取数据的时候就已经设定了不添加索引。我发现当我去掉了案例的默认索引以后,和我的脚本出现了同样的问题。所以解决方案是先给我的datafame添加一个默认索引,然后再进行上面说到的分组操作,接着把有默认索引的dataframe跟分组结果结合在一起。同时对分组项目排序。分组后的结果有没有默认索引都无所谓,因为合并时都得重置索引。我没有试过如果这个dataframe也自带了默认索引,最后能不能成功合并。纯粹为了探索,我应该了解这个,但因为我运气好,在研究之前就已经得到了我想要的结果,所以我就没有继续下去,接下来我会继续拿那个案例把玩一下。

为什么会在Excel的单元格数据传入pandas的时候就把默认索引禁止掉呢?其实不禁止也完全没有问题。因为在最后把加工过的东西输出的时候,我可以控制不输出。之所以会有这样的习惯,写出这样的控制,是因为我看的第一本用python批处理Excel的书里面是这么写的。在看那本书的时候,我觉得那本书写得一般般,因为他给出了一个例子,然后大概告诉你要实现什么功能,接着就是展示脚本。我觉得起码你得在介绍那个例子的时候,除了源数据本身,也得展示一下你最终的效果是什么。他们还偶尔说不清具体需求是什么,唯有去研究他们的代码,你才知道原来具体他们要干那个。

在一个明细数据表里加入小计这东西是完全可以实现的,但是从数据处理的角度考虑,为什么我要把明细跟汇总合并在一起呢?如果用我的Excel思维去考虑这个问题,我觉得明细表就是,明细表汇总表用透视表表达出来就好了。因为数据透视表是很灵活的,可以用任意的汇总维度去观察同一个源数据。python可以轻松处理Excel的数据,但是到了Excel以后,展示的方式的控制好像python的插件就有点难以直接控制,而要控制这个最好的方法就是通过api,用VBA控制,因为vba是原生office的自带工具。

我发现python批处理Excel脚本的运行速度跟电脑的CPU有很大关系,跟内存大小关系不大。用我办公室的电脑运行,但需不到6秒,用我宿舍的电脑运行大概需要7秒,用我家里的电脑运行大概需要7.5秒。这是在正常的情况下,如果我的电脑正在执行多任务,这些时间就会说不准了。之所以我说这跟电脑的CPU性能有关,因为运行脚本的时候我盯着任务管理器。发现有段时间Excel的CPU会飙升最大40%,虽然维持的时间很短。不同性能的电脑同样CPU,封顶都会飙到40,这就意味着CPU的核数越多,单核的性能越好,那么这个脚本的运行速度就会越快。6系的i5运行6秒,2系的i3运行8秒,是有差距,但经历过Power Pivot得12秒起,python很爽了。

我觉得这个python脚本还有继续改进的空间,继续努力。

2021-11
25

数据表达

By xrspook @ 9:14:41 归类于: 烂日记

我觉得自己对数据和图表有一种痴狂,但我又不是那种很文艺的人,所以我希望图表是漂亮的,但我不会花很多精力去把图表搞得很花俏,哪怕那看上去会更漂亮。我是一个实用型的人,所以当我看到人家用一大段文字来描述数据的时候我会很自然翻一个白眼,显然那些东西最佳的表达方式是图表,哪怕你不能用图,用表也是很直观的,没有必要用一大段话把明明一目了然的东西搞得很复杂,而且一旦这样做,别人核对起来也非常麻烦,所以是什么样的脑洞才搞不出那样的东西呢?到底那么逆天的模板是谁创造出来的呢?真想把那个人揪出来打一顿,可能一顿还不解恨,要打几顿才能解决问题。创造那种表达方式的人已经够狠了,这样反人类的表达方式居然会被当作模板,一次又一次使用,那些使用的人为什么就不抗议呢?创造者的脑洞很奇葩,追随者根本就没有用大脑,没有用大脑的结果就是在套用的过程中根本不理解作者的意图,然后各种各样的错误就出现了。

数据的表达应该很舒服美观,当你把那些处理得当以后一切都是那么的舒服,但是用一种不恰当的方式强行表达,那不仅仅是影响美观,而且会让人觉得处处卡顿,有时甚至是看半天都不知道那到底是干嘛的,因为没有逻辑性可言,所以一些笔误的东西会层出不穷。最经典的笔误就是把数字倒过来写,比如15写成51。从输入者的角度考虑,这样的笔误很正常,但是从数据本身考虑,这根本是无法容忍的错误,因为一大堆数字的排列方式毫无逻辑性可言,所以出现了这些很明显的笔误,在核对的时候非常难找出原因,因为那不是重复计算或者缺少数字那么简单。核对汇总数的时候,你怎么都想不到那差值是怎么来的,唯有一个一个人肉对明细,最后发现原来是如此低级的错误。可以汇总的数据还可以快速对比出有差别,但是一些时间的数据,而且就只有一个时间的数据发生这种错误简直就在考验你的RP好不好,有没有那么好的运气能找出这样的毛病?

刚刚参加工作的时候,不知道为什么就被叫去做统计。有一次去找领导签名,那是一个很常规的报表签名,他突然问我某些数据,那时毫无准备的我根本回答不上来,然后他就来了一句,你对数字不敏感,不太适合做这个。做这个不是我主动选择,是你们安排的,如果你觉得我对数字不敏感,你完全可以找一个敏感的人去做。现在回想起来,即便突然有一天领导问我同样的问题,我依然会回答不上来。因为我的脑子就不是用来装那种数据的。我不能马上脱口回答那个问题,但是我却可以最快的速度反馈出最精准的答案,我的习惯是把数据抓在手里,而不是一直存放在脑子里。这些年下来,事实证明在这个单位我是干这个的最佳人选。如果是几年前。这个最佳人选是毋庸置疑的,而现在估计我得加上之一这两个字,但是如果综合考虑对全面性的把控,我依然是那个最佳的人选,没有之一。

正是因为我干的就是这个,所以当我看到别人在瞎整的时候,我会条件反射一脸嫌弃。

2021-09
2

月初吐槽

By xrspook @ 14:29:22 归类于: 烂日记

又扛过了一个月末的疯狂。每到月末我就会莫名地紧张。月末前的5天,我已经在纠结,虽然那些纠结一点用都没有,因为不到最后一刻,再纠结也做不了任何事。那么到底怎样我才不会纠结呢?或许这根本不会发生。因为我总想在月末的那一天就结束所有,但以现在的业务量看来,这根本不可能。

月末那一天的确可以结束那天的事情,但是跟其它日子一样,只是那一天的,其他的呢?其他的东西我越发觉得是个无底洞。越来越多的乱七八糟,越来越多的核对,实际上无论核对什么,无论需要什么数据,始终是来源于最基础的那些。只要把最基础的那些整理好,其它东西都好说。这种事解决的办法就是做一个系统。从底层开始就把基础数据处理得当。现在我们的确是有系统了,但是有系统跟没系统没什么区别,之所以要做系统是为了把基础数据规范起来,然后进一步让基础数据适应各种的汇总口径,接着我们只需要制定汇总的格式,就可以把所有东西套进去。理论上是这样的,但实际上我们用了好多时间才仅仅保证了基础数据没有一些奇奇怪怪的错误,而那些错误我们根本说不出原因。

一开始,我觉得有了基础,数据汇总就很好实现,在这个方面我们的系统几乎可以这么说,是完全没有作为的。这些基础数据也东一片西一片没有连成一个有关联的网络。这样的话就意味着即便你把数据拿过来,你还得自己去做关联。除了关联以外还有一些必要的信息上面是缺失的,于是又只能手动把数据搞回来以后人肉添加上去。或许你会说,其实这样也不太难,的确如果数据少的话没什么问题,但是我们的数据是我们兄弟单位的起码10倍甚至20倍以上。我们用的是同一套系统,他们觉得没问题,我们可能就问题很大了。反过来说,如果解决了我们这么复杂的问题,他们应该就没什么烦恼了。一开始设计的时候的确是这么期望的,但实际上软件根本无法满足我们的需求,哪怕是最基础的需求。我们经常被那些不稳定的错误搞得瑟瑟发抖。

仅仅是每个月都要人肉输入的账本而已,居然使用了一年,依然不稳定,依然会有各种奇怪的错误。所以他们这软件是怎么开发的呢?又或者说是他们故意这么干,让我们一直持续的给管理费吗?如果是其它公司,而不是一个店大欺客的浪潮,估计我们早就已经用得很爽了。现在完全是恶心。如果完全由我们自己懂行的人去研究去开发,这些问题不会存在。或许会有其他的问题,那是不可避免的,但现在我们觉得很棘手、我们觉得能解决,但是他们又不给我们解决的问题不会存在。

我的月末纠结到底什么时候才是个头呢?我感觉到某一天我们的系统已经很成熟,又或者说我已经处在那种可有可无状态的时候,我的纠结就会告一段落。但是,要等多少时候才会这样呢?我感觉这是一个无底洞。

2021-05
2

劳动着过节

By xrspook @ 18:21:43 归类于: 烂日记

又是过了晚上11点30才结束战斗,这是一个很普通的工作日,但因为发生在五一之前,发生在一个五一长假之前,也发生在一个很重要的月末,所以这对我来说变得很不简单。甚至我觉得大概我12点之前完成不了日结的工作了,但实际上我做到了。从他们发出数据,但我最终也发出数据,不过是花了10多分钟而已,之所以那么快是因为我就只剩下最后一车没处理了,其它的都已经做完,否则光是抄写和敲打二三十行数据已经需要很长时间,就更不用说还得核对。其实跟以前相比,电子数据的获取现在简单了很多,因为我不再需要人肉合并数据,我不需要人肉把某些信息补全,虽然信息还得补一些,但是跟从前比起来,已经轻松了很多。因为现在的数据只从一个系统生成的,所以也就不会有人肉输错,然后我还得核对别人人肉数据这个过程。

日报我的确在凌晨12点之前就搞定了,但是接下来的月报,我花了接近两个小时。省储的部分其实没花多少时间,但是中转的部分光是仓号,光是每个仓号的数据就已经把我折腾得筋疲力尽。中转到底有多少个仓呢?省储不到30万吨,但是都存放在大仓,很多都是1万吨一个的,虽然有些仓没有1万吨那么多,比如说油罐,但是存储占用的仓只有30多个。我们有90个以上的仓是有粮食的,也就是说余下的那些都是中转的。省储的仓变动不大,一个月下来就变那么几个而已,但是中转的仓实在高深莫测层出不断地进出,不断有损耗,不断地变换着客户,变化着品种。对结算的人来说,他们搞清单位就行了,什么品种都是一个价的,但对我来说,同一个单位不同的品种,同一个单位不同的粮食性质全部都得分开。如果所有的这些中转仓都可以看成一个数的话,大概我就只需要在中转那里分出几个品种,小麦,玉米,大麦和高粱,之前还有豌豆,但是豌豆在4月中旬就出完了,但是除了这些品种以外,还有客户这个概念,还有客户的粮食有不同性质这个概念。于是汇总的需求一下子就成倍涨上去。每天都有十几个仓在进出,预计不出具体会是哪些?而且不到结束的那一刻都说不准到底哪些仓还在变动,于是这就很被动,某个客户某种性质某个品种的粮食没结束,对应的东西也都不能结束。对外行人来说,那不过是90多个仓里面的10多个要晚一点有数据,但是对我来说,那不仅仅意味着十几个仓,还意味着它上面需要汇总的很多个节点,全盘都得挂住。有时我会觉得统计上这种东西,其实根本没有必要存在,因为如果有些报表可以支持的话,那些东西更有意义。但也正是因为有一直以来这些死规矩的强迫要求,让我不得不规范,让我意识到别人的随意会造成某些恶果。

五一节的凌晨,我2点多才睡觉,五一节的早上8点多,微信就已经在响个不停,因为单位又开工了。我9点多起来,开始继续干前一个晚上没干完的。干到中午接近12点,我实在忍不住,去吃了一点东西,然后继续填国粮局那些根本没有标准表格的表格。到下午1点30的时候,我才终于把事情都干完了。其实还有一件事没干,就是填那个浪潮的智能化系统,但是那不是我不想干,是那东西根本就没有开放,于是我们也就填不了月报这种东西。上个月的月底不开放这个月的报表,1号也不开放,具体什么时候开放,他们也没有给我们一个确切答复,所以这到底是什么玩意呢?不能提前完成任务,我甚至想按时完成任务也不允许。

我感觉只要我一工作,我就不得不吐槽浪潮。是不是某一天,我会拨打12345投诉浪潮这个鬼东西呢?

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress