此文是《10周入门数据分析》系列的第6篇
想了解学习路线,可以先阅读「10周计划」
经常有刚从事资料分析的职场萌新,问我做资料分析工作要学些什么,应该怎样规划学习路径。我会告诉他:如果你Excel还用的不溜的话,就先学学Excel,当你用Excel处理和分析一些小资料集没有问题的时候(具体表现就是:常用函数公式信手拈来,枢纽分析表,筛选,排序,图表绘製操作熟练),你就去学习SQL语言,然后用BI去分析去熟悉业务。然后到了一定阶段,你可以上手R或者Python。后面如果你能更进一步,可以去了解一些Spark等 大数据框架。
为什么要学习Excel?
首先Excel是我们最常用的资料分析和处理工具,Excel的功能非常丰富,基本可以涵盖我们在之后在其它软体(SQL、BI、Python、R)中要学到的那些功能。
有的人可能会问,既然Excel这么强大,为什么还要学其它的工具?这是因为Excel是通过功能表的形式来进行操作的,很难实现自动化和功能複用,当然你也可以通过VBA来实现,用VBA也就是程式设计了,不过因为VBA这种语言学会了基本只能在office软体中使用,学习的投入成本和产出收益不成比例,不推荐学习,这是客观原因之一;另外就是Excel在处理比较大的资料集的时候,性能很差,并且经常崩溃。(虽然Excel2013及以上版本宣称可以容纳100+万条记录,但几万条资料就开始卡顿了)。
为什么Excel学完要学SQL?
客观原因是绝大部分资料分析岗都有SQL技能的要求。企业里面为了保证资料的安全性和管理的方便,资料都是统一存放在资料库中,从资料库中提取和查询资料需要使用SQL语言,甚至有的公司就是用SQL语言来做资料分析。
另外一个原因就是即使你先学了其它的工具,比如R,Python,甚至Spark等大资料框架,你会发现最后你还是得学习SQL。如果你先学习SQL,那么很多概念你都能在学习R,Python,Spark等更加複杂的工具之前弄清楚。对于后面的学习会有帮助。这就好比建房子,都是先打地基,然后一层一层的盖。
SQL语言的学习排在Excel之后,其它工具之前,还有一个很重要的原因就是,SQL可以在一定程度上帮Excel解决大资料集的问题,同时架起一个通往其它工具的桥樑。
关于资料库和SQL的学习,也是分为两篇,第一篇讲资料库以及表的概念。第二篇是SQL语句的掌握和资料库的操作。
一、资料库基础知识
先谈一下我对资料库的理解。资料库顾名思义就是资料的集合,是由一张张资料表组成的。
放在物理实体上,是一堆写在磁片上的档,档中有资料。这些最基础的资料组成了表(table),我们把它想像成一张Excel的sheet,如下图:
每一张表都有一个唯一标识,即主键,也就是ID。ID是资料库中重要的概念,叫做唯一识别码/主键,用来表示资料的唯一性。就相当于我们的身分证,是唯一的,有了 身分证,就知道资料在哪了。
ID通常没有业务含义,就是一种唯一标识,每张表只能有一个主键,且主键通常是整数,主键一旦设立,值通常不允许修改。
资料库是表的集合。一个资料库中可以放多张表,我们给每张表命名,表与表之间能互相联繫。联繫就是资料能够对应匹配,正式名称叫联接,对应的操作叫做Join,我们想像成Excel中的vlookup。
比如上面两张图,左图是学生资讯表,右图是老师资讯表。左图的主键是学生ID,右图的主键是老师ID。细心的读者可能发现右图还有一个学生ID,这里的学生ID是专门用来联接用户表的,它并不是主键。只不过两张表通过学生ID这个唯一资讯来关联。
但两张表关联也并不是资讯能一一对应的,也会存在空缺的时候,比如:
那两表建立连接就会变成:
了解上面的概念,你就知道什么叫关係型数据库。简单说,它是由多张能互相联接的二维行列表格组成的资料库。在资料準备时,我们通常要建立表关联来分析。
关係型数据库是基于关联代数模型发展而来,常用的关係型数据库有SQL Server、MySQL、Oracle、DB2等,这个视企业使用为准,我们后续学习都以MySQL为主。
各关係型数据库(不感兴趣可跳过):
DB2: 关係型数据库, 适用于大型的分散式应用系统, 确实是非常非常好的资料库, 无论稳定性, 安全性, 恢复性等等都无可挑剔, 而且从小规模到大规模的应用都非常适合。但是使用起来觉得非常繁琐, 安装的时候要求颇多, 很多软体都可能和DB2产生冲突, 因为一般DB2都是安装在小型机或者伺服器上的, 所以在PC上安装很费事儿。新建一个库需要设置很多东西, 分配各种各样的存储空间。
Oracle: 是目前市场佔有率最大的资料库, 我在学习SSH的时候用的就是Oracle, 安装起来很繁琐, 而且居然程式档有3G之多… 用起来非常方便, 对于我这样的初学者, 有很简单的配置, 对于要求很高的企业级应用, 也有很複杂的配置和管理方法, 有很强大的资料字典, 可以说是最实用的资料库了, 但是查了一下, 价格不菲…
MS SQL: 当初用的是2000和2005版, 这两个版本差了很多。2000的资料库做的不错, 程式很小, 操作简单, 功能较全, 算是各方面都很中庸的资料库吧, 是中型资料库, 我的毕业设计就是用MS SQL 2000做的。2005中加入了很多功能, 複杂多了, 有大型资料库的风範了, 而且价格也变高了, 个人觉得除非用的是Window Server 系统或者针对Microsoft产品, 否则不如用Oracle好。
MySQL: MySQL是一个很好的关係型数据库, 免费, 而且功能很全, 程式又小, 安装简单, 现在很多网站都用MYSQL, 在栏位约束上做的差了点儿, 其他的都不错, 和MS SQL 用着差不多。
Access: 典型的桌面资料库, 觉得做个单机系统, 比如记帐, 记事儿什么的还成, 在局域网里跑个小系统都够呛, 资料来源连接很简单, 因为是Office的资料库, 所以Windows自带资料来源。
更多关于资料库的知识,看一本《资料库系统概论》就够了。
二、尝试使用MySQL资料库
如果还没有接触过资料库或者说SQL,推荐大家下载并安装MySQL资料进行尝试,MySQL资料库的下载安装比较简单,安装完成就可以使用。
可以访问MySQL官网进行下载,网址如下(这里给出的是Windows版下载位址):
http://dev.MySQL.com/downloads/MySQL/
下载MySQL时,需要进行免费注册,注册页面是英文的。下载该工具后,点击运行,这个程式就能够联网自动为你安装MySQL,并自动进行配置。在安装过程中,需要你设置密码,自己设置一个登陆密码,并记住,下次登陆MySQL时,需要这个密码。
解压之后没有my.ini档(我的埠设置的3308),截图中是我增加的。
管理员命令列:
在MySQL安装目录的 bin 目录下执行命令:
mysqld — initialize — console
得到如下结果:
看到有个警告,查了一下mysql建议使用utf8mb4
修改my.ini文件
警告没有了,上面列印了预设密码:nj>uUJkpH4/I
然后,安装服务:
mysqld — install MySQL8.0
因为这是电脑上第二个mysql 所以服务名改成了 MySQL8.0
启动服务:
net start MySQL8.0
修改初始密码
登录mysql之后执行:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
将MySQL和Excel或者其它资料分析工具连接起来
预设安装的情况下,有一个外挂程式允许MySQL资料库和Excel相连接,试想一下,我们在MySQL资料库中通过SQL语言进行大量资料的处理和计算,将计算结果存放在特定的资料表中,再通过Excel连接上MySQL资料库,将资料读取到Excel中,用Excel进行分析并绘製图表,免去了将资料从资料库汇出再导入Excel的麻烦,是不是就可以提高效率了呢?
后面会分享一篇通过ODBC驱动程式连接一些报表\BI工具来做分析的操作。
关于MySQL的学习推荐书籍《挑战PHP7/MySQL程式设计与超强专题特训班(第四版)》。
想了解更多的资料分析知识,请关注我的Facebook, 期待你与我互动起来啦~