本文总结数据分析常用的软件,以及推荐相应的学习参考资料。
1. Excel
常用操作有函数、可视化、数据透视表、VBA。
函数
可视化
i.单元格
ii.静态图
iii.动态图
即带有控件(部分涉及VBA),可以选择数据并动态展示结果的图表,如果要用Excel来做业务数据的Dashboard,动态图是很好的解决方案。
注:黄成明老师的《数据化管理》中的部分内容涉及如何用Excel建立业务运营工具。
数据透视表
Ctrl+A-->Alt-->D-->P-->F ——透视表“一条龙”操作应该是目前用到最多的快捷键组合了。
数据透视表是快速数据分析的不二之选,主要操作为分组计算,当然利用“切片”工具来动态展示数据也是可以的(数据透视表也可以用来做动态仪表盘)。
VBA
如果不想让一个重复的枯燥的动作重复几百上千次,那么VBA编程是一个比较好的解决方案,编程的目的主要在于自动化和定制化,VBA编程相对简单易学(甚至有的岗位就是专门开发VBA模块的)。
荐书:
谁说菜鸟不会数据分析,张文霖;
点评:数据分析入门不错的书,小蚊子老师的博客上也有蛮多干货的;
Excel疑难千寻千解(套装);
点评:ExcelHome,ExcelTip两个论坛出的书质量都非常好,该套装基本是“行走江湖”必备,涉及函数、VBA、操作、数据透视表等;
Excel图表之道,刘万祥;
点评:最早是从博客上了解到刘老师(博客为“刘万祥ExcelPro”),那时才发现Excel也可以做出非常高大上的商务图;
左手数据,右手图表,徐军泰;
点评:该书主要讲动态图,也就是可以有交互操作的图表,第一份工作的时候参考此书做了一个半自动化的Excel监控模板,受益颇多;
别怕,Excel VBA其实很简单,Excel Home;
点评:结构清晰,行文有趣,有编程基础的话,很容易读懂。
2. SQL
数据一般可分为3类:
-
结构化数据,e.g.平时见到的类似Excel表格那样的数据;
-
半结构化数据,存在父子节点的数据,e.g. XML, HTML, json格式的数据;
-
非结构化数据,e.g. 文本、图片、音频、视频等;
数据分析“直接”使用的数据大多数都为结构化数据,这些数据通常都存在数据库里(SQLServer, Mysql, Oracle, Hive等),而要提取这些数据,SQL必不可少。
常见的SQL操作分为:
-
读,即select语句,可以分为select, from, where, group by 4个模块;
-
写,即create(新建), insert(插数), drop(删除)。
常见的数据类型有:
-
数值,e.g. int, bigint, bool, float, decimal等;
-
字符串,e.g. char, varchar, string等;
-
日期,e.g. date, datetime, timestamp等;
对应这3类数据类型的函数需要熟练掌握。
此外,还有两类必须掌握的函数:
1. 聚合函数,也称为“聚集函数”,常用的有:count, sum, avg, max, min, group by ;
2. 窗口函数,即对一组值进行操作(不需要使用到group by),常见的函数有(此处以Hive举例):
-
计算:count|sum|avg|max|min over;
-
分区:partition by;
-
位置:lag, lead, first_value, last_value等;
-
排序:row_number, rank, dense_rank, ntile;
e.g. 筛选用户最近的N单交易
row_number() over(partition by user_id order by create_time desc)
注:注意区分row_number, rank, dense_rank的差别
e.g.统计当日每小时累计交易金额
sum(orderamt) over(order byorder_hourrows between unbounded preceding and current row)
更多可以参考:http://lxw1234.com/archives/tag/hive-window-functions
荐书:
SQL必知必会,Ben Forta
注:作者还有两本《必知必会》,分别是讲MySQL和Oracle PL/SQL的
3. Python/R
Python和R不仅免费,还属于“平台模式”——来自世界各地的开发者都可以贡献自己开发的工具包。“平台模式”带来了大量的充满热情的用户,用户越多,软件的生命力就越强,发展也越快,这可以看作是软件生态的“人口红利”。
Python和R各有优缺点和相应的适用场景,数据分析(挖掘)90%以上的场景,两个软件都可以覆盖到,如果你已经在学其中一个,那就努力学好直至精通就行。
数据分析软件的学习框架都很相似,如下是个人总结的Python学习框架(仅供参考)。
注:更多可参考
编程学习建议
注:Python学习框架
入门资料推荐:
Python
-
Python基础编程,Magnus Lie Hetland;
-
像计算机科学家一样思考Python,Allen B. Downey;
-
官方文档,包括其他常用数据分析module的官方文档(很多教程就是根据官方文档改编过来的);
R
-
R语言实战,Robert I. Kabacoff
-
Advanced R,Hadley Wickham
-
Cran Task Views: https://cran.r-project.org/web/views/
注:更多关于R\Python的文章可以关注朋友Sim的公众号——”每天进步一点点2015“
4. SPSS
如果是业务人员要做数据分析,在编程上的要求就没有那么高,但又要做一些基础的分析,那么SPSS是需要学的。
荐书:
-
SPSS统计分析基础教程,张文彤;
-
SPSS统计分析高级教程,张文彤;
-
IBM SPSS数据分析与挖掘实战案例精粹,张文彤,钟云飞;
注:该书的内容编排、案例以及提供的参考资料都非常好,虽然是用SPSS实现,但分析思路仍很值得参考;
-
Discovering Statistics Using IBM SPSS Statistics, Andy Field;
注:作者的官网为 https://www.discoveringstatistics.com/,Discovering Statistics系列还有讲R和SAS的两本书,质量也应该不错。
5. 其他
SAS 医药、金融类应用场景较多,如果要批量统计或出报告,Macro和GTL两部分的内容要掌握好;
Matlab 和Mathematica、Maple并称为三大数学软件,常用于图像处理、信号检测、工程领域等,读研时分析fMRI图像大部分都是用Matlab操作,其开源替代方案是 Octave;
Stata 偏向经济计量,可以编程,也支持界面化操作,但是用着总有种“不伦不类”的感觉,界面化操作没有SPSS好用,编程的话又不如Python/R方便,而且使用场景相对来说比较小众。
学习建议
1. 工具宜少不宜多,本人曾学过不少软件(瞎折腾),后来发现大部分学的都没用上(没有应用场景)。一般来说,Excel是面向小数据和简单的分析时用,SQL用来提数,Python/R则是遇到数据量较大或者模型更加复杂时用(不想编程可以选择SPSS),如果是超大型数据,则要结合Hive, Spark, Storm等平台使用;
2. 带着问题去学,“学以致用”的方法之一是“输出倒逼输入”,问题是我们实际遇到的,也就不用担心学习之后找不到使用场景的问题。学习Excel的时候尤其印象深刻,从基本的数据格式到VBA都是我遇到问题后去学的,User Guide或者《入门到精通》类的书太厚了,没必要都看一遍;
3. 教材宜精不宜广,找一本经典教材,打好基础,构建知识框架(主干),然后逐步“碎片化”的、以应用为导向地学支干的知识;
注:教材一般推荐人民邮电、电子工业、机械工业这3家出版社,如果要找英文电子书就上libgen;
4. 打好基础,再定方向,学习软件工具的时候要先把基础操作打好,层层递进,既要扎实又要有明确的方向。e.g.先学python的基础语法,然后再有针对性对选择学习和数据分析有关的工具包(pandas, scipy等);
注:不要为了追求高大上的效果而好高骛远(层级越高用的场景可能就越少),所谓“屠龙之术,学而无用”(更多可参考
工具思维的陷阱);
5. 整理自己的知识框架,以及重点、难点、易错点,有体系的知识利用效率更高且更容易记住。此外,当你和别人分享你的学习经验时,表达出来也更清晰、更有条理。
工具属于“器”,不要沉迷于工具的使用,更重要的是“道”——对算法的掌握(使用场景、优缺点等)、对业务的理解等。