嘿,关于 Python 数据分析,我想对你说几句


(anaiw) #1

这是一篇关于《利用 Python 进行数据分析》的读后感(确切说我还有两章多一点没看完),以及一些关于 Python 入门和进阶的东西。

六月底的时候在专栏说,也许七月份会写一些东西,但是整个七月份都一直没有特意去做这样一件事。这是因为最近一直在看《利用 Python 进行数据分析》,还剩下一部分没看完。我想说,这确实是一本好书,值得一看,甚至是反复看。全书正文 400 页,逐步介绍了 NumPy、pandas、matplotlib 三个库的使用,配合了大量实际例子;另外有附录 50 页,是一份非常精简的 Python 语法介绍。全书翻译非常专业,其中关于 pandas 和 matplotlib 的讲解非常精炼和实用,足以作为一本工具书来使用。

然后再解释下,为什么一直都没有再写一些教程。这是因为看了一些专业书,回头看自己写的一些入门教程,始终觉得太粗浅,用曾经收到的一条评论来说,叫做“还不如看文档”。仔细一想,确实不如看文档,甚至看比较专业的书(比如动物书),也是不如直接看文档的。但再转念一想,看文档毕竟是一件痛苦的事情,而写一些入门教程可以降低后来者的学习成本,说不定还可以引领他们进入更高层次的学习(不是说指教他们,只是说可能会激发他们的兴趣)。

所以对大部分还徘徊在门外的同学来说,看一些入门教程,是有益的,但这些零零散散的东西不足以构筑自己的知识体系,你需要去读一读更系统的书。打个比方,用 matplotlib 画一个时间序列的图,大家肯定都会,这是能够很容易搜索到的,但是如果遇到这个问题:[关于用分钟线画图的时间间隔问题。。【已解决】],就不是一般教程会告诉你怎么解决的了。

matplotlib 会自动补全分钟数据的空缺值,所以直接 plot 就会出现这种情况:

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘1111’%20height='441’>)

于是得要 plot(df.values),然后重新调整横轴标签才会显示正常:

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘530’%20height='411’>)

再比如说,遇到一个问题是 Panel 数据用 to_frame 转换为 DataFrame 的时候出现数据丢失,一开始死活不知道哪里出了问题,和后端工程师对着复现的问题看了好久(以为是数据问题),最后发现 pandas 文档上写着“默认就会丢掉 NaN”:

filter_observations : boolean, default True
Drop (major, minor) pairs without a complete set of observations across all the items

我讲这两个例子,就是想说系统学习的必要性。当然,遇到问题之后解决问题的能力也很重要,因为总会遇到书上没说过的东西。关于解决问题,我还想多说两句。由于实习岗位的一部分工作就是在社区(RQ的量化社区,就是上面那个链接的社区)答疑,于是发现社区里相当多的问题都是没有价值的问题,非常容易就能够解决,简单到只要在任何一个搜索引擎里输入关键词就可以解决。但实际情况是,目测有超过五成的问题,是因为提问者并没有付出任何努力去解决问题(我不认为社区提问是解决简单问题的好途径,也就称不上是“付出努力”)。回想自己入门的时候,经常是几个搜索引擎一起搜,后来发现了 stark overflow 之后就更开心了,再后来,逐渐会去和文档一起看。如果不去培养解决问题的能力,那么很可能是没办法成功入门的。

然后关于进阶的问题。也许你已经迈过了入门的门槛,和我一样,已经会用 Python 的基本语法,也会用常用库的基础性功能,但是看着身边的大牛,真的是难以望其项背。是的,我也忧虑过,怎么办呢?和我一起实习的浙大 C 哥,cs 和物理双学位,去北美读个 PhD 轻而易举,而且可选方向非常多;南大 H 哥,金工专业,上过西瓜书作者周志华大牛的课,机器学习玩得 666;法国读数学的 L 哥,Matlab 玩得转,Python 也写得好;还有北美数学、统计学双 PhD 的 Z 哥,等明年毕业的时候,和女朋友人均 2.5 个博士学位,,,反观自己,似乎是真的追不上了。能怎么办呢?就是没有办法,差距就是这么大,只能保持学习,逐渐进步(我觉得应该是没办法缩小差距的,毕竟他们也非常努力)。但这并不意味着自己无法提高,相对于自己来说,总是可以一直进步的。比如我,一年半之前连“Hello, world.” 都不会写,后来还被写上了一个知乎大牛排行榜。233,这个主要是作者太看得起我了,后来还想和他说把我撤下来,然后我自己写个申明,说自己是弱鸡,但想想这样做就太作了,我想自己还是能够给大家带来一些帮助的。当然,先前抱有太高期望的同学,这时候真的可以取关了,我确实不是什么大牛。

最后,我想说,不管是想入门还是进阶,最好的办法就是动手去做,遇到问题主动解决;如果有些同学还处于迷茫的状态,不知道自己能不能够去尝试,不妨来看看我主页里个人简介的最后一句话,你不会后悔的(别多想,不是广告,我不卖课,也不做培训,但想问我值乎的话,我可以考虑下,嚯嚯嚯嚯嚯)。对了,以后专栏还会更的,为后来者留下一些路标,这是我的初衷。