2023-07
28

跨表查询python版搞定

By xrspook @ 22:30:18 归类于: 烂日记

花了一整天的时间去做python版本的发跨表查询,最终还真的被我做到了,唯一有点小瑕疵的就是出入进度里我还没有实现批次小计。我基本已经想好需要一个什么样的数据处理,但是怎么把那些东西结合起来我还没有一个成熟的思路,估计会有一些类似的案例,我可以参考一下。

之所以这个脚本居然用了一整天,是因为最后我算了一下字数,居然有4000多字。因为我用的是VSCode,所以实际上敲代码已经很高效了,因为几乎所有符号都会配对出现,一旦有手误的地方基本上都会提醒,但是有些东西是VSCode不会提醒我的,比如我要用到pandas各种格式的数据,有些事不能直接用print打印出来的,必须要用个循环才能把那些东西展示出来。如果我用python处理Excel,我会用xlwings进去,然后用pandas。之所以用xlwings,因为这个东西支持Excel的版本比较多,老一点的插件有的只支持xlsx有些不支持xlsb,有些仅仅支持xls,而我选择的这个xlwings基本上我用的Excel格式都支持了。现在我主要用xlsx和xlsb。因为做这个python查询之前,我已经在PQ和PP上做了两遍,所以我完全知道自己要做些什么,但具体那些东西该如何实现,应该用什么样的表达式去实现,是我花时间的地方。

昨天之前我对pandas里面的dataframe并不太熟悉。我知道那个结构很类似于Excel的表格,但实际上用起来又跟表格不太一样。我觉得那个东西最好的地方就是不像PQ那样,经常被高手套叠起来,于是你想半天都搞不懂那到底是什么。作为一个不是python新手的人,我还是喜欢用短语句完成,然后再连接起来。自学python让我觉得最成功的地方在于我喜欢用for循环,而且还非常习惯使用套叠循环。如果在我大二学C语言的时候,我也能把循环玩得这么溜。估计我就不会为冒泡法这种东西发愁了。

虽然花了一整天时间,才终于把这个东西整出来,但我个人感觉还是比较愉快的,尤其是敲代码的过程,因为相对于在Microsoft 365的PQ或PP的编辑器里面敲代码,VSCode里敲代码实在太爽了。PP会经常提醒我公式错误,因为PP那个你看不到的循环实在会把你整得很惨。PQ里我不过是删了个文字,不知道为什么它会自动给我加半边括号,所以搞了半天,我都搞不懂自己到底哪里错了,最后发现不知道为什么,多了个括号,又或者在调整某些语句的时候多了或少了个逗号。英文和中文逗号在编程的世界里是有区别的,在VSCode里可以看得很清楚,但在PQ的高级编辑器里。因为字体太小,你还没办法快捷变大,非常折磨我这种眼睛不太好的老人家。

高中的时候我的数学老师经常一节课就只讲一道题,他会用很多方法把那道题解出来。现在,我也喜欢上了这种别人可能非常难理解的行为。

2023-07
27

PQ为什么不改进

By xrspook @ 8:26:19 归类于: 烂日记

上周开始我就在用Power Query跟Power Pivot做跨表的数据合并。与其说是数据合并,不如说是数据查询。一开始我用的是PQ,因为从感觉上来说好像 PQ做这个就够了,但当我把东西都做出来了以后发现PQ很多规则都非常奇怪。让我觉得要试一下PP到底怎么样。根本原因是明明数据量很少,但是PQ的运行效率却很低,而且运行效果很不稳定。从0-1生成PQ的过程比较挣扎,虽然整体的思路我都有,我知道我要有什么后效果。但是该如何实现还是花费了我不少时间,比如查询参数应该用什么格式的表格表达出来。一开始我把4个日期和3个文本以左右的方式表达。的确这样的取数没有什么问题。虽然实际上PQ是用列去进行各种魔法运算的,但要精确定位到某个单元格也就是某条记录一点问题都没有。后来当我要用PP,那个东西至今我不知道如何在某列混杂着各种内容的单元格里获取我需要的数据。要顺畅用起PP,我得把日期参数跟文本参数拆分为两个表格。文本参数我不是直接给PP用,而先给PQ,所以横的竖的都无所谓。日期参数是直接在PP里做限定,所以必须以PP的规格去设定表格的形式。这仅仅是参数的表达,是最简单的东西。如果以普通人的视角考虑,某一列数据日期和文本混搭一点问题都没有,但是从机器的角度考虑,从我使用的那两个软件的规范考虑,显然这样是不行的,又或者说不是不行,是你为什么非得以一种如此随意的方式去做这么简单的设定呢?混搭的方式,肯定也会得到你想要的结果,但是对软件新手来说,绕那么一大圈显然就比较费劲了。

用PQ和PP的方式做出来的两个查询都能实现我的目标。数据都是没有问题的,但是一个文件体积很大,一个查询时间很长,且查询效率忽高忽低不稳定。这两个都不是我想要的。我不过是想做一个查询而已,很简单的东西,实际上我就只需要一个结果。那个结果以我想要的方式输出,后续的格式化纯粹是让我自己觉得比较顺眼好看而已。但是这两个Microsoft 365内置的Power都不能达到我的预期目标。

在挣扎之前,我觉得应该用PQ实现目标,但实际上出来的效果跟我想象的相差挺远,最根本的原因是我实在不太理解PQ的数据处理。PQ是用来做数据清洗的,所以从某个大表里获取数据,然后进行各种筛选,接着以各种目标形式输出表格,理论上这是很简单的事情。这大表的查询几乎可以这么说,一定是引用外表,因为源数据已经很大,你不可能在上面直接运行,虽然其实一直以来我都是这么干的,但是那个时候我并没有进行跨表操作。从现在的运行效果看来,即便是同一个代表同一个源数据,最终需要以几种方式输出分组筛选后的结果,最终要生成多少个查询效果,我就得把那个源数据查询多少次。理论上怎么会干这么傻的事情呢?直接把大的源数据查询一次缓存起来,往后就不需要调用了。但问题是从我现在的观察看来。最终我要多少个查询结果,他们就同时开始查询多少遍,于是有些时候就会导致有些查询结果失败,你得刷新再来。原因是这个查询正在使用那个源数据,那个查询也在用那个源数据,为了抢那个源数据打架了,抢不赢那个就刷新失败。都是查询一个源数据,我考虑过既然无法避免它们一次又一次查询,那么我就把那几个查询按顺序来,完了一个再到下一个,但实际上这个也是无法控制的。都说VBA是单线程的,但是PQ是多线程的,单线程虽然慢,但是多线程这样打架,最终反而得不到我想要的效果。从理论上说,我把那个大表一开始就缓存起来,后面的都用内存缓存,这很正常啊。我设置查询的优先等级,先刷新一些,然后再刷新另外一些,这也很正常啊,为什么却没有一个很直接的实现方式呢?有些人想到要用VBA去控制PQ的刷新顺序,但是VBA却很难判定某个刷新是不是完毕了,VBA也很难做到这个刷新完毕了再开始下一个。

接下来我要试一下python方案,我的目标是查询时间小于10秒,生成的文件小于100K。

2023-07
26

子宫缩小

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

打第6针诺雷得那天刚好是术后半年,所以医生开了个阴超看一下什么情况。拿到那一堆单的时候,我赶紧去交钱,因为上一次开阴超的时候医生没有给我预约,所以得先交钱,然后自己预约,但是交完钱以后我才发现,好像这次我不需要预约,因为医生已经预约了,再看回那个开B超的单子,发现上面的确是有预约号和预约时间的,正是因为有了这个限制,所以那张单必须要在两个小时之内交费才能起效,否则就得找医生重开了。我挂的号是8:00-8:30的,是第2号。我看到医生的电脑一开,我就赶紧去那个诊室。因为教授都是那种一个人要管好几个诊台的类型,所以他具体在哪个诊室实际上是说不准的。所以我只能匆匆忙忙地跑到那两个诊室那里,看诊室门口的小屏幕。1号病人里面的医生叫了两几次没有答应,马上就开始叫我了。我是那个教授的助手第1个录入资料的病人。估计教授得管4个诊台,就得有4个助手在那里负责前期工作。有些教授前期工作、开单工作都是助手完成的,有时甚至助手开完所有以后也不找教授看一眼,但有些只是助手,真的只是进行诊前录入。或许开单之类的也都准备好,但是最后还是得教授自己去把控这个病人,教授自己把那些单子打印出来。教授的助手到底是谁,每次都说不准。哪怕你每次都看同一个教授,他的助手也是车轮转的。我已经在那里看了半年的病,但是我好像从来没有见过某个教授重复出现的助手,所以他们到底是实习生、住院医生还是规培医生呢?我不在乎他们是哪一款,反正只要他给我开的单是齐全的,如果需要做什么检查,给我提前预约,我就满意了。

B超的预约时间是10:00-11:00,单子上写要提前5-10分钟到去报到机那里报到取号。我先交款,然后拿药,拿完药以后坐在药房门口吃了个早餐,因为不知道要不要验血,所以我是空腹去的。因为知道只要做个B超,所以我先把早餐吃完了。吃完早餐去打最后一针诺雷得。打完以后我就碰运气拿着单子去报到机,结果发现居然可以报道,我是10:00-11:00的第31号。那个时候还不到9:15。这就让我很震惊了,通常报道机这个东西只能提前半小时报到,如果更早是无法报道的,起码挂号看诊的时候是这样,但原来那个B超的报道机可以超前这么多。所以虽然我是10:00-11:00的第31号,实际上我被医生叫进去的时候才10点过了一点点。

照B超的时候医生说我的子宫有点小,但是没有复发。拿到B超报告的时候,我也发现了“稍小”那个词,但那个到底是怎么回事呢?我完全没有概念。拿着那张B超报告我就回去找教授了。教授拿到的那张报告以后就问我这是谁看,然后我说是我,然后他找我要病历。当时我只拿着一张B超报告回去,病历在我的包里,所以我又冲出去找我的包。当病历和B超报告都齐全了以后,教授又看了好一阵子,然后跟我说很好,没什么问题。因为B超报告上那个子宫的大小是不正常的,但因为我在吃药,所以这个就很正常。之前我只知道诺雷得这种东西会抑制子宫内膜的生成,但我完全没想到居然会让子宫的体积也变小。打第6针时测的子宫体积是33×27×32,3月6日,也就是打第1针的时候,子宫体积是45×36×42,第1次照阴超,还没做掉巧囊的时候,子宫体积是49×42×45。五针诺雷得下来,我的子宫体积从正常变成了偏小。据说正常的成年人子宫体积三径加起来应该在12-18厘米,现在我才9厘米。通常情况下照妇科B超除了有子宫的体积外,还会有子宫内膜的厚度,3月6日我的子宫内膜是5mm,而这一次直接就没有写子宫内膜厚度了,写的是“子宫内膜呈现状”,也就是说在B超这个机器下,基本已经测不出厚度了。由此可见,诺雷得对我的作用非常明显。也正是因为这样,我算是有点理解为什么之前两次看的那个副教授会质疑诺雷得已经打了三针,之后还要不要继续打下去。如果我是那种还需要生育的人,继续打下去,子宫内膜已经熬到几乎可以忽略不计,同时子宫的体积也会缩小。这样的话如果要进行备孕会不会导致受精卵着床的表面积缩小呢?同时,过薄的子宫内膜会不会也会让受精卵不容易着床呢?再考虑到我这把年纪,估计也不会再生孩子,所以做手术的那个教授,估计是用最保守的方法,确保残存的那些子宫内膜异位分子不会死灰复燃。

如果他们有做更详细的临床研究,只要找这些患者,每个月都过来做一下B超,大概就能确定到底诺雷得得打多长时间最合适。当然这也是因人而异的,因为子宫内膜异位症有些人是子宫腺肌病,有些人是巧克力囊肿,有些人的巧囊是单侧的,有些人是双侧的,有些人有痛经史,有些人会像我这种之前几乎没感觉。这一切都建立在数据之上。如果要获取这些数据,虽然监测手段很简单,就只是照个英超,但对病人来说理论上半年一次B超就够了,现在变成了一个月得照一次,那么这个研究的费用就会随着B超次数以及观察人数的增加而变得有点天文数字。所以实际上这个试验是很容易做到的,但是他们会不会觉得没有必要在这方面花费钱财呢?尤其是如果这些观察因素还得考虑病人的个性特征,需要观察的样品量就更大了。要病人为这些额外的B超埋单,显然不会有多少人愿意。如果这些数据仅仅足够他们形成某个硕士论文的一小部分,这个研究经费又太大了,但从探寻子宫内膜异位症这个学问来说,进行这种持续观察又是很有必要的。

对我这个路人甲来说,我对子宫稍小这个描述没有什么特殊的感觉,但是对经验丰富的教授来说,在没看到我的病历,在知道我正在进行什么药物治疗之前,这样的数据是让他震惊的。

2023-07
25

终于熬到了第六针

By xrspook @ 11:53:41 归类于: 烂日记

终于熬到了第六针诺雷得,第一针的时候我得找回做手术的那个教授,第六针的时候我依然要找回他,因为再不这样,其他副教授总是给我一副按照你这个情况到底要不要继续打下去。我不知道这家医院的规范化治疗到底方案是什么样的。总体的方案是怎样的?个人的方案需不需要做某些调整?也就是到底有没有个性化方案。打到第6针诺雷得,找回一开始的那个教授,他默认6针没有打完,这个第6针还是要打的。接着他说那往后就开始吃药了,西药和中药混合,需要吃的是地诺孕素。这个大名鼎鼎的药,很久以前我就已经听说,因为我的同事前段时间已经在吃这个东西。那个时候她给我照的那个是唯散宁,这个地诺孕素是某一个厂家生产的,那个药的名字也就是俗称。就像诺雷得其实是醋酸戈舍瑞林的俗称。在这个药厂他叫诺雷得,在别的药厂就不叫诺雷得了。地诺孕素这个药在这个厂叫唯散宁,在另外一个药厂就不叫这个了。诺雷得是一个进口药,虽然国产的药里也有醋酸戈舍瑞林,但好像那个醋酸戈舍瑞林主要用途是控制儿童过早发育,而不是控制男性的前列腺癌以及女性的子宫内膜异位症。诺雷德是一个谈判药,唯散宁是一个乙类药。地诺孕素不久之前,唯散宁的独家专利已经到期了,所以国产的地诺孕素已经上市了,价格大概只是进口唯散宁的1/2。在中山一院等下拿药的时候,我曾经看到药剂师从抽屉里拿出唯散宁。我经常需要的钙尔奇D以及莉芙敏是放在另外一个开放的柜子上的,也就是说相对而言莉芙敏以及钙尔奇帝的发货量理论上会大一些。正是因为我在这家医院看到他们曾经发放唯散宁,所以我觉得估计往后我的也是唯散宁,我不会用那个比较便宜的国产替代品。也正是因为已经有了类似的国产药,我觉得作为唯散宁的价格不会跳水。

我算是运气比较好的,因为之前的诺雷得不是谈判药的时候,3.6毫克的需要接近2000块钱一针,而我打着这半年的诺雷得加上注射费才接近1100块钱。在你不知道之前诺雷得那么贵的时候,你会觉得1100块钱一针实在是太贵了。那个东西打下去不到一秒钟就结束了,那是一支预充的安全针,所以真的是咔嚓一下就没有了1100块钱,而且你还得不得不忍受它的作用,比如潮热比如说失眠比如说控制不住的胡思乱想,还有控制不住的肥胖。如果没有莉芙敏的反向添加,诺雷得肯定会引发没有底线的体重狂飙。每个月打完1100块钱的诺雷德,还得吃500多块钱的莉芙敏,体重才算是控制住了。这种事情有多么的疯狂!如果人好好的,什么问题都没有,这些消费完全不存在。每个月开心花销1600块钱是多么爽的一件事情,但这对我来说事实就是每个月咔嚓一下没有了2/3,接着就是每天早晚都得记得吃药。我已经吃了三个月的莉芙敏其中有两个晚上忘记吃了,还有一天是我故意没吃的。

术后6个月又做了一次阴超,结果跟10多天前的体检结果一样,未发现复发迹象。

2023-07
24

不能病啊

By xrspook @ 16:28:16 归类于: 烂日记

在看《闪闪的儿科医生》之前,我根本不知道原B站有自己制作的纪录片,而且那些还是医务的纪录片。以前看医务相关的纪录片,基本上我都是在中央电视台记录频道看的,可能是CCTV-9,也可能是CCTV-10,但更多的医务纪录片得追溯到我还是这个初中生的时候,那时我看明珠台的外国医务纪录片,但是相对而言,那又不仅仅是医务的,更准确地说,那应该是普及医务知识又或者是人体常识的纪录片,因为跟真正的医务纪录片相比,里面肯定没有长时间的手术镜头又或者是某些进行了模糊处理的伤口镜头。

之所以之前没有这些东西,一定程度上是因为要在无菌的手术室里放进去拍摄的人以及拍摄的器械,就必须做非常完备的准备工作。一旦你熟悉习惯了做这些事情,去任何手术室拍摄都不是问题,只要医院允许,患者也允许。但是从不知道该做什么准备到做出完备的准备是0-1的过程。相对于后续的来说,这个非常难。对于以前的拍摄来说这更难,现在或许你可以在手术室里面布置很多个固定摄像头,然后进行远程拍摄,那摄像头可以是高清的,可以是变焦倍数很高的,所以只要不是纠结到某个地方的某个细节,你只要拍摄一个手术室的画面,布置摄像头,不需派摄影师和导演也能做到,但以前的拍摄不具备这样的设备支持。如果你要拍摄手术,你就得带着大块头的摄影器才进去,不仅仅是器材,还有人,线材灯光等一大堆东西。

等待《闪闪的儿科医生》更新完毕期间,我在爱奇艺上看了另外一部叫《生门》的医务纪录片。那是一个讲产科故事的纪录片。拍摄时间比《闪闪的儿科医生》早好几年。《生门》的故事非常好,但限于几年前的拍摄设备,跟往后的纪录片相比,你会明显地感觉到色彩不怎么好,但这并不影响《生门》成为一部非常优秀的纪录片。可以这么说,那一部纪录片反映了人间的百态,让你感受到很多很多。绝大多数案例都会为钱而发愁。有些人选择用坚强对抗生命中的无奈,而有些人则选择主动放弃。在传统观念中,生孩子就是一个把人生下来的过程,是件令人兴奋的喜事、好事,但实际上其中的风险估计得用不计其数去形容。之所以这些案例能上纪录片,大概是因为那算是很多不幸的浓缩。没有任何人会希望自己的情况和案例相似,但是你永远都预测不到,也无法选择自己不会成为某个案例的续集。

绝大多数人都会觉得医院是个救命的地方,即便没钱他们也要救人,但就是存在这么个现实,当你欠费的时候,当你不再交钱,医院无法给你上药。这个时候,无论医生还是护士,就会一次又一次催你交钱,他们无法为你解决钱的问题,但他们知道你需要这些药物支持。或许在医院系统还没有这么完备的时候,这种限制还不至于这么明显,但现在情况就是这么的红果果。医生护士在努力救活你的命,但因为没钱,你欠费还逃逸,最终可能还是得这个科室的医生护士为你买单。患者及家属是很无奈的,但是医生护士也是无辜的。因为没钱,所以很多人都没有买医保,但就是因为没有买医保,所以遇到很烧钱的情况,穷人就会变得更加无路可退。这是一个非常明显的恶性循环,但是当你没有真的遇到,又或者是没有通过别人的案例深切意识到的时候,你会觉得对我来说那个几率很低很低,所以我宁愿把那些每个月买医保的钱花在其它地方。

今天我终于打完第六针诺雷得,每28天一针,一针算上注射费接近1100元,后面4针除了打针还得同时药物补充,一个月的医药费接近1700元(除了500多元的莉芙敏是自费药其它是乙类,但东莞一年异地就医门诊统筹金额就只有不到900元,4月开始我就全自费了)。如果我是每个月3000元到手的人,还得租房,我还能吃饭还能继续活?

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