python稳健性检验_浅谈使用python处理数据的日常经验

- TFPraw.dta

- TFPtrans2single.dta

- TFPresult0909.dta

- getTFP.py

- balabala...

这个示例是一个典型的工作时产生的数据集列表,它是怎么产生的呢?我们稍微想象一下这个数据保存的那个傍晚:你整理好了一个很宝贵的实验数据,但它还没有转换成回归所需要的那个形式,你考虑到形式转换后,会不可避免损失掉一些信息,如果后期做稳健性检验,可能会用得到,所以...我们保存这个中间文件吧!于是你灵光一闪构思了一个形象的文件名:`数据项名称` + `raw`,以表示这是一个原始数据。你认为在以后的生活中,一看到这个文件名就能反应到它是什么。过了一周,你将这个原始数据变成了一个回归可用的数据项,但仍旧很不幸,转换出来的形式是一个特例,换句话说,你可以通过`TFPraw.dta`将数据转成另一个形式。数据的形态犹如一棵盘根错节的大树,分岔越来越多,你已经预感到将来会保存更多的关于TFP的各种形态的数据集,但后面的事情后面再说,你将这个数据命名为了`TFPtran2single.dta`,它表明你将TFP数据转换成了`single`这个形态,这可能是一个你当时自认为非常形象的标志词,一语道破这个数据形态的全部特征。再后来,你发现保存的数据形态越来越多,本着忠实存档的初衷,你为它们一一命名,但词汇总有用尽的一天,又或者某两个数据本身就很贴近,于是文件名中开始出现日期,如`0909`,中文名,如`(已剔除A类)`,甚至开始出现语气词,如`修订版`。如果到现在为止,则事情只能称得上琐碎,似乎并没有很糟。但保存文件总是为了使用它,当你未来某天要直接复用某一项数据时,你看到了林林总总各式各样的数据集,它们形态很近但又不同,你想直接找一个能用的,想来想去,于是决定回到脚本源码中(或者do文档中)去看看当时这个数据是如何生成的。以便考虑是不是能用它。但倘若你没有保存生成该数据的代码,那么这个数据集就像是断了枝条的叶子,你再也无法(无心)使用它了。

应对方法

1. 建立数据说明文档,串联起每一个中间态文件

每当我们新保存一个数据集,我们务必要做到一件看似麻烦,其实非常关键的事情:为这个数据集埋下足够多的“锚点”,让以后的自己可以迅速想起这个数据的所有关键特征。数据说明文档就是一个很好的主意,通过一个文本文档,记录每一个数据文件的特征(例如该文件是否经过某一处理,含有哪些关键变量),每当自己过后再次使用它时,则先浏览数据文档,确定是否需要对原数据集做更改。更好的办法是写一个数据生成的即时脚本,对于Stata而言,是书写一个do文件,这个do文件含有从原始数据到成品数据的全部整理、清洗代码。这个方法对于处于数据探索阶段的工作特别适用,因为该阶段往往数据集会频繁更改。

2. 规定统一的命名方法

除了为每一个数据集书写说明文档,在文件命名上也不要太过于随意,我们可以使用较为流行的驼峰命名法来命名文件,也可以直接在文件名书写该数据的主要特征,例如`CoffeeShopIn-latlng-year-shopid.dta`说明了该数据是一个关于咖啡店的数据,其中包含了shopid、经纬度以及年份等变量,可能对于外人来说,这仍旧不够清楚,但既然这个数据是你自己整理的,也足够你明白它是个什么玩意了,当然,这样的命名法,会导致文件名过长,不利于快速理解。

3. 最后的忠告

如果你在为文件起名时,一个英文单词想不起来,不要用一个过于简单的英文代替,更不要用拼音代替,用中文吧,这没什么可耻的,只要能让自己的脑袋清晰起来,用火星文笔者都支持你。

2.代码复用

在我们学习Python等编程语言的时候,不止一次被强调`代码可复用`的重要性,但是在实际coding的过程里,新手并不能很好地遵守这一理念,导致代码体量巨大,臃肿难读,这是因为我们在coding过程中并未站在全局角度考虑问题,仅仅是线性完成当前工作,当任务出现分岔时却不对原线路的部分代码进行抽离复用,而是直接重头再来,时间一久,代码就会臃肿且没有逻辑接。代码复用率低是一种什么样的现象呢?

1.一个函数只能用一次,或者只固定在一个地方被使用,最令人尴尬的新手代码就像主函数是一个流水账,其中顺序排列着若干子函数,这样的代码可能在容错性上存在着相当大的隐患。

2.当工程量大时,存在若干功能大致相似的函数,它们本来可以被合成一个函数进行使用,却被分割成若干函数。

3.代码存在过多的简单的流程控制语句,如if..else,或者try...except,这并不是说它们不该存在,而是说它们本身应当可以是被优良的程序逻辑规避的,当大量出现时,说明程序逻辑存在着相当的问题。

应对方法

1. 对新函数审慎创立

它是否与代码其他部分低耦合且高频率调用,也就是说,函数所完成的部分之于整体更像是一个API,主函数从这个函数中获得所需要的结果,但又不与函数内的代码产生过多的依赖。足够满足这两点特征的部分代码,才适合单独成为一个子函数抽离出整体。

2. 常写注释

与创立数据文件类似,当定义新函数时,我们应当勤写注释,多写注释,用以尽量描述函数。

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

1)必须原创,禁止抄袭;

注意事项:

你可能感兴趣的:(python稳健性检验)