2023-08
2

脚本能批量导出导入?

By xrspook @ 8:23:29 归类于: 烂日记

我觉得自己已经迷上了PQ,沉迷于那种盘曲折叠的状态,一发不可收拾。我不知道为什么,如果要生成某个表格的话,我首先想到的是PQ,大概是因为出来的东西相对于PP来说PQ更像个表格,但是PQ又不是一个普通的表格。虽然到现在为止,我还没搞清楚到底限制PQ性能的到底是什么。还有另外一个让我很抓狂的是我在PQ的高级编辑器里面写了好多东西,除了进到里面复制粘贴以外,我还可以通过什么手段获取那些脚本呢?若某一天我换上了个低版本的office,可能用不PQ,所以我可能需要用Power Bi来代劳,那个时候如果得把脚本一点一点贴过去就实在太痛苦了,有没有一个脚本导出的方式呢?虽然实际上我问这个问题是因为其实我也没搞清楚如果我在某个Excel文件里面设置了宏,我该用什么方法把那个脚本复制出来。毕竟实际上Excel就是一个幌子,脚本才是最核心的部分,同样的疑惑,我在PP上也有。所以,微软到底是怎么想的呢?实际上无论是PQ、PP还是VBA,最终都是用某些脚本去控制Excel本身。把那些脚本在这个Excel可用,在另外的Excel也可以。我自己用VBA的习惯,就是喜欢把脚本都丢在某一个下文件里,那个东西里面什么都没有,只有脚本。当我打开这个文件,我再打开其它文件,我就可以在其它Excel文件上运行我想要的脚本。所以实际上那些脚本是些独立的东西,我甚至可以觉得,如果脚本编辑器能单独放出来,把文件拖进去以后就可以直接展示结果,有可能是直接把最终数据展示出来,也有可能是生成一个文件。对于小型的图表直接展示数据显然是最方便的,但是对一些比较长篇的东西,直接生成一个结果文件才是我们想要的,但是Excel没有把这个脚本控制器单独放出来。根据我自己的运用习惯,我觉得把PQ、PP跟VBA一起单独,变成一个就像Word、Excel、PowerPoint之类的独立 office套件完全说得过去。但显然,可能微软并不想这么干,因为一旦这样把高深的东西都暴露出来,很快就会被抄袭。因为实际上这些功能并不是office这三剑客独有的,其它编程软件也能实现。还有另外一点就是显然三剑客不是给普通人用的,因为对一些很新很新的手来说,Excel甚至不是用公式的,而是用来单元格加单元格加单元格获取结果的,还有就是把单元格设置成手动彩虹的颜色。如果那里用的是条件格式的色带我觉得很靠谱,但是某一天当我看到某人Excel设置成手动彩虹的时候,我彻底震惊了,他们直接把Excel变成了画板。

不是人人都会着迷于编程,但因为我的算力不好,我老会粗心大意,叫我一个一个单元格叠加,加这加着我就点漏了。所以我得让机器帮我做重复的工作,而我则躲在远远的控制端负责发号逻辑命令。

2023-08
1

是不是“同志”的差别

By xrspook @ 20:14:03 归类于: 烂日记

昨晚吃饭的时候去得比较晚,所以在吃饭期间,饭堂里只有我跟大领导两个人,而且他比我后到,他坐在我的后面。我根本不知道他来了,但是从各种声响可以判断得出,估计我后面有人。吃着,他突然过来,然后拿个手机给我看一个相片。照的是某个文,标题写的是免去某某同志的职务。大领导给我看这个图的时候没有说什么。标题说的是某某同志,正文里说到两个人。五一过后集团公司的某个领导被抓了,该不是这个马上就要退休的也被抓了吧?看到我一脸懵圈,我的领导高兴了,因为我的反应跟他一样。没有意识到标题里写的一个人,正文里写了两个人,那两个人到底有什么区别。根据我的常识,无论那个人是被剥夺职务还是退休都会用免职这个词。大领导也不需要我继续猜了,直接揭开谜底,两个人的区别在于一个在名字后面加了同志,另外一个没有加了。有同志的那个,后面说的一大串免职,意思是他不再担任那个职务,他要退休了。另外那个没有在名字后面加同志两个字的人意味着他的所有职务都被剥夺。在没看到这个文之前,上周我们已经看到集团公司各个小组的组织成员变更了。核心管理者那里已经全部把某某人除名,但是在上周我看到的那些小组主要成员里还有这个文里面刚刚被免职的某某同志。所以我觉得这个挺逗的,明知道某某同志要退休,为啥还那么快出那个小组领导成员的文呢,直接等新的领导上位了,再更新那个不太不是更好吗?那么就不用一件事做N次了。

有同志跟没有同志会有这种本质上的区别,对我这种没什么觉悟的人来说,是根本不会反应得过来的。我完全不懂得那套规则。最重要的是我根本不想懂得那套规则。让我觉得不解的是,既然那些小组领导层的文要发了一遍再一遍,为什么这个免职的文非得把一个退休的跟一个除名的放在一起呢?难道是好事坏事中和一下吗?退休明明是件好事,但是却跟另外一个人非常不好的连在一起了,这里面到底有多少层意思?是不是暗示现在我允许你退休,但这不意味着你真的能脱得了干系,只要某人或者某人涉及的那些东西跟退休的这位同志有任何的关联,退休的这位同志迟早也会被叫回来。除非真的还有这一层意思,否则我个人觉得他们不在乎多给一个文号,发一个另外的文,把两人分开。

不知道我这种最基层的路人甲什么时候才能看到这个文。看不看到对我来说无所谓,反正我跟他门没有关系,我跟往后的人估计也不会有关系。一个领导要退休了,那么谁来接替他呢?在我们集团内部,我看不出谁会是接班人。既然内部找不到接班人,必定是上面空降下来,至于是一个,多个,还是一群,这种事我管不了。所以知道跟不知道跟我有什么关系呢?只要他不把我炒鱿鱼了、不明显的降低我的工资,对我来说就没关系。反正我是上不去的,他在我上面塞多少人又有什么所谓呢?

管好自己的事已经很不容易了,我根本没那个心思去了解将来要远程管我的人。

2023-07
31

没意思的恐怖片

By xrspook @ 16:23:42 归类于: 烂日记

周六在家里,在爱奇艺上看了三部恐怖片。我感觉好像没啥恐怖的。第一步说的是香港校园里面的女鬼。第二部讲的是木偶班主的女儿被害死后,被瞎编成了恶鬼。第三部讲的是打更人遇到了旁门左道的东西。可以这么说,除了某些镜头,有那么几秒钟让我觉得有点恐惧以外,其它绝大多数时间里,我都没有觉得那有多么的恐怖。现在回想起来,真的让我觉得恐怖的只有麦浚龙导演的《僵尸》。《僵尸》之所以让我觉得恐惧的是里面的镜头切换、配乐处理、动作指导,以及故事本身所带入的各种高级蒙太奇处理。画面本身挺恐怖,但实际上最恐怖的是观众自己想象出来的那些部分。那些想象出来的部分是你无法控制的。那些又是你自然而然不能控制住不去想。其它恐怖片里让你受到惊吓的通常都是镜头的突然切换,但是那种惊吓是比较低端的,而且效果也不明显。那种惊吓就类似于突然间有人在你背后拍你一下,惊吓是一次性的,没什么后果的。那种你预知到危险,但是你又不可以避免的恐惧才是最折磨人的。《僵尸》我在看第二次的时候,才明不到那是什么意思。因为如果理解不到那层意思,这部电影的恐怖阴魂就会久久不会散去。但是周六我看的那三部恐怖片完全没有这种效果,也就是传说中的没有任何余味,没有任何咀嚼的价值。看的时候可能觉得还行,但看完以后就马上被打上阅后即焚的标签。你难以仔细回味其中的细节,回忆整个故事的主体都变得比较艰难。这样的恐怖片我感觉如果是在院线上映,是不会有什么票房的。因为看过的人应该不会给别人推荐这部片子。除了第一波去看的人,接下来不可能通过口碑获取更多观众。但我们又不能说这些恐怖片是失败的,因为实际上里面的某些恐怖设计还是比较到位的,之所以造成这样的后果,我感觉跟故事的编排深度有很大关系。

感觉我小时候看的香港恐怖片那种恐怖的力度就很大,是那种如果你不看到最后你肯定会一直很受折磨的那种。因为你不知道结果到底是什么,你自己就会在那里胡思乱想,想得越多就越恐怖,但显然这三部片子都没达到那个程度。日本的恐怖片,比如贞子系列也很能把握这种东西。但除了贞子系列以外,好像说起日本的恐怖片我就再也难以脱口说出什么片子了。香港的恐怖片以前最多的是僵尸题材的,最经典的那些僵尸通常是穿着清朝大官的服饰,双腿和双臂伸直,双臂和身体呈90度直立跳跃。虽然都是不知道被什么控制的鬼东西,香港的僵尸跟美国的丧尸又有明显区别,虽然实际上我没有完整看过美国的丧尸片。

对我来说,好久都不看恐怖片,突然来那么一下,纯粹只是为了换个口味。

2023-07
30

半半的坎

By xrspook @ 11:14:37 归类于: 烂日记

当我把python的脚本修改完毕,觉得没什么问题了之后我把那发给我的同事,理论上她的电脑上已经安装过python,但实际上当她双击打开py的时候,会默认弹出VSCode,并不能运行python本身。这是我之前从来没有遇到过的,因为我安装的都是python的官方程序,启动器在安装的时候只要你默认,基本上都会装上,但问题是我同事安装的是anaconda。现在的python教程通常都会推荐用anaconda,那里自带的编辑器是jupyter notebook。jupyter notebook到底怎么用实际上我没搞懂的,虽然实际上py文件也能运行,但jupyterr notebook默认的保存文件不是py,所以用普通的python到底能不能打开jupyter notebook保存的文件我还真没试过。从我开始学习python,我用的就是VSCode。当我很长时间不用VSCode以后,当我再次打开,我会发现VSCode里面默认帮我装上了jupyter notebook的插件。

双击点py文件就用VSCode打开,然后还得找终端,但实际上因为可能anaconda安装python的时候并没有默认安装启动器,所以在那里双击没有运行cmd,双击打开py文件的时候,依然是VSCode本身,变成一个运行不了的死循环。 VSCode本身没有问题,问题是py文件的关联没做好,这才是问题所在。

要做到的不过是双击就能直接打开py文件运行,所以把py文件默认用cmd打开运行就好了。在cmd里输入python会显示拜访的版本,这没有问题,这意味着电脑已经安装了python,但问题是当输入where python的时候显示的是一个C盘很长很长的地址。按照那个地址打开文件夹,的确是有python的。再把这串地址上面的exe文件输入到py文件的打开方式的时候,py文件就终于可以双击运行了。双击的确可以弹窗运行,但问题是如果py文件运行的时候出现状况,比如说一闪就没了,就意味着可能文件没有正常运行,而是遇到了某个东西中断了。第一次成功设置好双击的时候,的确就出现了这种情况,直觉告诉我肯定是出状况了。在py文件所在的那个文件夹里输入cmd,然后再运行py文件,结果发现提示没有安装pandas插件。我的同事觉得很不可思议,因为anaconda本身理论上这些插件都是齐全的。我觉得之所以会这样是因为anaconda把插件安装在了自己的那个地方,而现在是单独运行python本身,而python本身的文件夹里面没有这个插件,所以这就导致了插件缺失。需要安装插件,要怎么个装法,对我这种人来说,我第一个想到的就得先设定插件下载来源为清华的镜像。如果你使用python官方路径下载,估计要很长时间,即便花了很长时间也可能会下载不全,因为非常有可能因为时间太长,网速太差丢包。虽然安装一个pandas的插件,但实际上要支持电脑运行,也要安装其它的插件,任何一个不齐全都可能会导致最终无法运行。在知道她得重新安装pandas的时候,我就已经把清华镜像的设置发给了她,但是她还要是没有意识到必须得先设置国内的镜像路径,然后再去下载。虽然单位的网速进行了限制,但是下载清华大学的镜像还是很快的,相比于python官方的下载来说清华基本上可以说是一些典插件安装的必然选择。如果你安装的是一些开源性自行设计小众插件,清华的镜像可能没有,那时候你就只能通过开发者提供的路径去下载。

其实我并不需要她完全按照我的思路来,我告诉她要什么,她只需要实现就行了,现在挺反映出来的状态是她大概知道我要做什么,但是她没有反应到用她的方法应该怎么做,有可能是她没想过要去想。一半他的一半的最终结果就是,我不知道她到底卡在了什么地方,因为以我的方式是完全不会卡的,她估计也会觉得我带她走了不少弯路。

不是人人都天生喜欢自发创新,该怎么找到这种人呢?

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脚本还有继续改进的空间,继续努力。

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