导读
自从事数据科学行业以来,便每天在与各种数据处理打交道,当然这里的数据处理是多方面的:既有数据采集和读写,也有数据清洗与变换,当然还有数据分析和挖掘。从主用工具的角度来看,大体上经历了这4重境界:Excel->MySQL->Pandas->Spark,姑且就称之为EMPS吧。
个人数据分析与处理经历的4重境界
对照这4种数据处理工具,计划开展系列学习与对比推文,本期做为开篇之作,仅做以概要介绍。
4种工具严格来讲其实并无实质性联系,除了它们都可用于基本的数据分析与处理。相对而言:
- Excel,几乎零学习门槛,应该是所有职场人都掌握的通用办公软件,但对于一名数据从业者而言,它可以占据一席之地(曾经数据分析师的入门套餐就是ESP,即Excel SQL Python)。个人对Excel的比较喜欢的一点是内置了常用的数据处理函数、支持数据透视表以及方便制作可视化图表等,但也仅适用于小量数据,基本上上万条以上记录用Excel就难免有些捉襟见肘了;
- MySQL,作为最流行的关系型数据库之一(当前关系型数据库行业生态可概括为2 2 1,即2付费Oracle SQL Server,2开源MySQL PostgreSQL,以及多平台内置的Sqlite),MySQL常常是众多高校开设数据库课程的首选(地位就好像编程语言中的C一般)。个人曾经一度刷SQL题几百道(参考一名数据分析师的SQL学习历程),对于写SQL方面也算悟得精华,但对于诸如索引、事务、引擎等进阶要求仍有欠缺,不过最近用SQL也是越来越少了;
- Pandas,作为个人入门Python之后学习的最重要的库,潘大师曾经一度是我数据分析的主力,也着实解决了我实际工作中的不少问题,还整理了很多数据分析的小技巧(详见这一年,我总结了这些Pandas小技巧……)。一直认为,在千万级以下数据量的场景中,Pandas是最好的数据分析工具,没有之一……
- Spark,当数据量超过千万数量级时,Pandas的处理效率就会肉眼可见的变慢不少,此时Spark这款分布式计算处理框架堪称是最佳替代品。当然,Spark的舞台绝不止于Pandas所擅长的离线批处理场景,机器学习、流处理以及图计算等都是Spark的独门绝技。为了用好Spark,个人不仅系统学习了相关入门课,还专门大费周章的学习Scala语言(Scala入门系列终章:类与对象),只因Spark与Scala才是绝配。
就像世界上没有最好的编程语言一般(当然,PHP除外 :D),数据分析也不存在最好的处理工具,所以这4种工具也并无高下之别,灵活运用合理搭配方能最大化其效用。也正是基于此朴素思想,后续将推出各工具对比学习系列推文,以Pandas与Spark.sql对比为主,MySQL和Excel也会视情加入。