2020-10
16

PQ上的纠结

By xrspook @ 23:59:46 归类于: 烂日记

晚上洗澡的时候我一直在想着某个Power Query的问题。某个功能我曾经试过用别的步骤去实现,但是到了最后一步的时候,发现某个东西算不出来,所以我就放弃了那个方法,文件也被我删掉了。晚上,当我遇到一个新问题的时候,我觉得用下午的那种方法才最容易实现。晚上洗澡的时候,我突然意识到,实际上下午的时候我几乎成功了,只剩下最后一步。当时我没想到,其实可以用一个以退为进。我可以做一个判断,如果if的判断等于空,就计算,如果不等于空,就是继续保留某数据。我并不知道如何修改PQ里某一列的数据,于是我的实现方法是新增一列对旧的那一列判断,然后把旧的那个删掉,新的那个重命名。这样就解决了下午我最后我没解决的问题。虽然这样做有点笨。高手一定不会这样做的,高手一定会有一些暂时我还无法参透的各种套叠解决问题。

要实现某个功能,最终我用了31行,更之前我用某个其它方法做出来的那个一样多,但后来的方法显然更容易理解。因为整个代码都是我手写出来的,命名也更加人性化。当然其实我也可以对系统自动生成的名字做修改,达到类似的颜值,但是某些自定义函数光靠系统的可视化窗口无法做到。经过这一番折腾以后,我更进一步地明白到之前我已经模仿做到的模糊查询到底做了什么操作。和之前我模仿回来的模糊查询比起来,这一次我实现的功能要麻烦一点。一开始的操作二者挺相似,模糊查询做完第1步以后,基本上就只剩下删除列和排序了,而我做的那个在完成的那一步以后,只不过是刚入门。我也不知道这一次摸索我到底是怎么折腾出来的,那显然,如果没有看见星光的M语言课程,我会继续迷糊。也正是因为第4节里说到了上下文,说到了新增列判断条件以及上下文的使用,才可以让我顺利流畅地通过第1步,也正是因为经过这一次练习,我觉得我已经略微掌握了上下文那个东西。

软件这种东西,光是看教程、听课,而不于实际操作,是没有用的,因为那个东西不会入脑。要形成条件反射,要让那些技能成为自己的东西,只有通过思考和练习。高手和低手的区别,我觉得大概在于高手的思考时间远远不需要那么长,所以他们可以有更多时间练习,而我这种低手,要在思考那里花好些时间,后来的练习当然比不上人家。基础的了练习尚且不够,就更不用说读懂练习中的异同。这种东西,在我高中的时候特别明显。高手在刷题的时候,我还在理解,至于为什么高手可以理解得那么快,至今,我都想不明白。大概这个东西不是想就能明白的。

经历过纠结以后,我觉得自己的脑洞又大了不少,在遇到问题的时候,我奇怪的思路又增加了一些。就是这些旁门左道的扩展,让我在处理正统问题上,貌似又更进了一步。

2020-10
15

自学有道

By xrspook @ 8:37:47 归类于: 烂日记

每天都在论坛解决别人的问题。一定程度上,我是在磨练自己,当自己的工作好像没什么新思路的时候,就需要一些刺激。有些非常弱智的问题,我会懒得去回答,但很高深的问题,又不是我能解决得了的。所以这其中也挺纠结,到底什么类型的问题才最适合让我去练手呢?我自己有问题,尤其是案例类的东西、跟数据直接相关的东西,我就没想过要放在论坛里问高手。通常我都是四处寻找答案,再不行,我就截图问身边的人,但无论如何,我都不会把数据发上去,尤其是工作类的。如果只是我个人的blog,所谓,反正都写了这么多年,根本没有秘密。但其他东西。不能这么随意公开,而我也没有真的遇到一个我自己解决不了的问题。有些时候,我想实现某些功能,但经过一番操作之后发现,即便能做到也很麻烦,所以我就直接绕过去了,因为不一定非得那样做。这条路不通,我就走别的路,直接放弃这条路。这也是我的快乐之处。在别的单位,可能领导会要求你必须得这么干,就要这样的格式,就要这样的数据。不管你用什么方式,但实际上那样的格式、那种模式数据实际上是很逆天的。我运气好,暂时还没遇到这种事。当然我也遇到过类似差不多的事情,比如应该写0的地方他们要写杠。把格式设定为逆天,实在让人觉得非常无语,但幸好我的领导是一些挺懒的人,某些格式一旦定下来就不怎么改,而且因为他们懒,所以定下来的固定格式也不多。

蹲在论坛解决别人问题的时候,我发现自己是一个很没有耐心的人。当别人提出某个要求,我又实现了以后,我觉得就大功告成。但之后那些人居然会在之前的基础上,不断加新要求进去。如果你有很多要求,为什么不一开始就说清楚呢?哪怕可能你根本没想到有人真的能做到你想象中的那样,如果做不到的话,别人会直接告诉你这个思路是错误的。绕了好大一个圈,解决了问题,但事后说这个问题只是开胃菜,还有后续那些。一次两次加料之后,我会觉得那人好烦,这完全是他自己的东西,为什么不一开始就摊出来说呢?遮遮掩掩到最后还是要慢慢的托出,简直在浪费大家的时间。当东西整出来以后,我发现有些时候他们一开始那个思路是错的,一开始因为无法全盘考虑,我就被他们默认带错路了,绕了好多个死胡同。他们自己的数据,他们最清楚其中的来龙去脉。但显然当他们把数据拿出来求助的时候可以看出,其实他们完全是蒙圈的。这些操作对我来说最大的好处是那些教程上面的东西经过一次又一次使用后,我开始有点行云流水了,虽然有些时候还是会很迷糊,但现在总算是有点头绪。之前我觉得,同样是列名,有时用中括号,有时用双引号,莫名其妙,但现在我几乎搞得清是一个什么状况。虽然在使用函数和引用数据的时候我还得不停琢磨。

你们不安排我培训,我就自寻培训的途径。

2020-07
8

过去的纠结开花了

By xrspook @ 9:38:16 归类于: 烂日记

当我以死磕式全包围的方法学习Think Python和做里面的习题的时候,网友觉得我完全不需要这样,那样太学生了,只需用到什么就学什么就可以了,但实际上,我觉得我这样做挺好。虽然我学的时候并不知道我除了这样还能怎样。看完书,但不会做里面的习题,我这书算算看好了吗?我要上手python,得到达条件反射的程度,不经过练习根本不行。我完全明白知道了理解了某些东西,但没有经过实践会是一个什么状态。

初中前两年我的英语老师从前是大学老师,后来不知怎的沦落到在一所臭名昭著的中学里教英语。他从来不给我我们布置作业,也不会有什么小测之类的东西,所以一年下来除了期中考试和期末考试,我们见不到习题。的确,开学的时候除了教材以外还会发1本练习题,很薄的一本,但做不做,做到什么程度,老师是放任自流的。他讲课完全么有问题,语法解释得很到位,字也写得非常漂亮,但他这种教法除非遇到非常自觉刷题的学生,遇到我们这种完全不自觉的,简直是必死无疑。我觉得小学毕业的时候,我的英语是很不错的,尤其是英语听力,因为某年寒假我还被选去某个地方上某个班强化过,但初中的前两年我算是被荒废了。要用得溜,无论你心法掌握得多好,依然需要大量的练习。中考的几门科目里,我的英语是最低分的。当我上了一所重点高中以后,我更加领会到我跟其他同学的差距,因为我所经历过的习题实在比他们少太多了!为什么当年我会刷物理的参考书,刷化学的参考书,却从来不刷英语的参考书和习题呢???英语这个东西和理科有一定的差别,理科你掌握了原理以后或许还能八九不离十,即便某些题目里有些综合,见过和没见过顶多是反应快慢的差别,但思路还是摆在那里的。英语这个东西有什么规定搭配,什么默认的例外,什么俚语,没遇到根本没法玩,我的跟头就是栽在了这里。如果可以重来,英语这个鬼东西我一定会刷很多题,而且还必须建立错题本。海量的阅读量和海量的单词量外加各种写作技巧拼凑起来,英语考试是可以拿高分的。不过话说回来,英语考试高不高分我完全无所谓,大概从高中开始,我就觉得英语是一种工具,实用至上。跟外国人交流的时候你根本不需要用非常正确的英语他们都能理解,所以其实六十分跟九十分没啥区别,都能解决问题。

学习python我之所以要做习题是因为Think Python那本书里面的实例其实非常少,知识点也不是真的全部都涵盖了。融会贯通这种东西完全靠做习题去达成。近段时间,我在写博客导出数据的转换脚本。的确,一些功能性的东西,我还是得去搜索,边学边用,但那些最基础的思路,是在我做习题的时候印到我脑子里的。比如我要筛选标签,正常人的第一个反应肯定是找筛选的函数,如果标签关键词只有一个,用find就好,但如果多个,那就得用正则了。我一开始也是怎么干的,但后来我发现这样会带入一些莫名其妙的路人甲,我需要准确匹配关键词,所以先建立列表,然后用if str in list就能完美解决的问题。如果标签数量多,还可以用字典替换列表,in在字典里的索引速度杠杠的。如果我不曾在字符串、列表和字典那里下过功夫,我怎么可能会有这种思路。习题的确折磨了我好段时间,但那都是值得的。

过去的纠结,让我现在顺畅。

2020-05
27

数据汇总小感

By xrspook @ 9:05:03 归类于: 烂日记

理清思路,比埋头苦干重要很多。如果一开始就掌握了方法,就不需要在路上兜那么多的弯。处理数据有这么一句行话,汇总时掉的汗,是录入时脑子进的水。如果一开始就把数据结构设定好,往后的汇总那是行云流水般自然而然的事。我是那种习惯于白手起家的人,通常我不会借用什么特殊的工具,比如说某个系统,我只用最普通常用的办公软件解决问题。

当然了,办公软件我是挑的,比如我只喜欢微软,我不喜欢WPS。而之所以不喜欢WPS,是因为我觉得很多东西他们仍旧留抄袭的层面,在一些非常核心的数据控制方面,他们远没有Office这么强大。有一些经常用到的小技巧,他们的确做了很好的封装要优化。但是会看的看门道,不会看的看热闹,就如一开始所说的,如果数据结构做好了,那些小窍门是不需要用到的。那些小窍门通过Office的高级公式是可以完成的。有人觉得那些小窍门非常有用,但是我觉得如果全盘数据由我控制,我的脑子不会那般进水,自然就不会挖坑让自己踩,那些所谓窍门也就不需要用上了。

跟数据透视表交了朋友以后,我明白到明细数据和汇总数据是彻底不一样的两种东西。你把他们混合起来用,结果将非常恐怖。通常,大家都喜欢这么干,而且觉得这么干是理所当然的事,而之所以有这样的看法,是因为当没有办公软件,没有Excel没有电脑之前,他们在纸质上就是这么干的。在纸质上这么干,可以让他们对整体数据有一个全面的认识了解。但实质上,他们所做的那些事正是数据透视表最擅长的。在纸上完成,只能做某一个分类的,如果要换个统计口径,那一大片数据等于白费。很多人在用Excel的时候,实际上只是把他们在纸上做的那些搬到电脑上。Excel不是一个画图软件,不是艺术家的画板,也不是一个用键盘操控的笔记本。这个强大的软件是有很强汇总计算功能的,我们必须用好这个,用不好别人的优点就是在增加自己的麻烦。软件的天马行空建立在我们说了一些他们能理解听懂的话。软件也是有脾气的,你得按他们的语法去表达你的东西,他才能用他的高超技术化腐朽为神奇。所以,我们首先要知道自己有什么,自己想得到什么,还有软件习惯用什么格式去处理问题。把我们的需求用机器语言翻译出来,然后我们就能得到我们想要的结果。把明细数据和汇总搞在一起其实并不是我们最初获取的数据心态,我们做的其实已经发展过了,要软件替我们做汇总分类,我们就要退回最原始的状态。为什么明细数据和汇总数据必须在一个页面反映出来呢?看数据的时候,我们到底是看每一条数据有没有问题,还是我们只是把那个明细数据当做是一个凑数的工具,而我们的眼睛直接瞄到了最后呢?如果我们关注的只是最后的汇总数据,明细数据摆在那里,难道就只是用来让我们多滑几下鼠标到最后吗?对基层人员来说,他们必须保证每一条原始数据的真实性、准确性和完整性,而对领导来说,明细是什么不重要,他们需要的是各种维度的汇总结果,每个领导的口味不一样,他们想要的汇总口径五花八门。成千上万的明细数据再用一开始纸质那种画大图的方法来汇总,根本赶不上这个时代的节奏。不仅仅是累处理数据的这个人,看结果的人也很烦。

程序语言也是一种语言,射手座有语言天赋,我觉得这可能是真的。

2020-04
10

强大到让我瑟瑟发抖的递归

By xrspook @ 8:41:56 归类于: 烂日记

大学学习C语言的时候,基本上我不会写单独的函数,所有要解决的事都在主函数里搞定了。当时我学过判断和循环,但是,我却从来没学过递归。在解决一些简单事情的时候,循环跟递归,没什么差别。从理解程度来说,我觉得循环更简洁一些,但是,当某个东西像套娃那样一层叠一层,每层里面依然用同样的规则继续套叠,不知道要叠多少层的时候。递归就会展现它无穷的魔力。循环难以实现这个,又或者循环并非实现不了,但是递归在完全不需要体现循环的框架下,简洁的语言就已经在做着循环的事情。

昨天,我第一次在Python里见到这个恐怖的递归。外国人的书,我觉得都有一个特点。正文的时候举的例子都很简单,但是一到习题,就会把你彻底搞死。习题里面会偷偷带入一些超纲的东西。大概写书的人理所当然默认你应该知晓。这种事情我已经在学习Java的时候领略过。当时那本书之所以没法看下去,就是因为我没办法想象出作者的脑洞到底是什么。他们的习题几乎可以说大多是一些填空题,但要实现一个功能,其实未必一定就得用某种方法。你给我一个条件,给我一些目标值,我能做出来也就OK了,为啥必须走你的路呢,这非常难。之前我不觉得自己跟外国人的脑洞到底差多远,但是当我对比过自己和他们写的程序以后,我发现真的差挺远的。虽然我们都能实现某个功能,就效率而言,感觉上没差多少,因为我只是在做一些非常初级的东西。应试教育的时候,有标准答案,当然好判定成绩,但实际上,编程这种东西真心应该天马行空。给我一个效率的限制,比如说完成某件事,必须在多长时间之内解决,代码长度不能多于多少,至于我用什么办法,这是我的事。

说回递归函数这件事,在处理几个简单数字的时候,可能你感觉不到它的强大,但是,当我见识过用那个东西画出来的层级图形以后,我简直就只有站在旁边瑟瑟发抖的份儿。真的不知道是哪个神经质想出来这么强大的东西。但实际上,深究下去,那也不是很强大,那不过是不断地重复一些已经设计好的事情而已。如果要人去做那些重复,一开始还好,但是随着事情的深入,会慢慢乱套,但是计算机不会,他们会一根筋地执行我们的指令。最终出来的结果是令人惊叹的优雅,还是乱七八糟一坨屎:就得看设定规律的人的功力了。

递归现在对我来说是一个非常恐怖的东西。因为我不了解它,所以我害怕它,就像当年认识循环一样。但是,用好递归以后,我的武器库里就会增加一个杀伤性非常大的家伙。说到递归,让我联想起新冠病毒。这个东西的递归到底什么时候才是个头?我觉得这肯定不是一个死循环,自然界非常擅长递归,处处都是数学和逻辑你知道吗?!但是,到底要递归多少次,全人类才最终能看到隧道尽头的曙光呢?到底这个新冠病毒函数的递归里埋伏了多少个随机数呢?学习递归让我明白到,层级少好对付,层级一旦扩增,那就是次数级的增长,而且,说不准到达一定层级的以后就会触发某些大招炸弹,想想都心寒。

编程是一个让我重新理解自然规律的过程。

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