欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【知识学习】如何零基础入门数据分析

程序员文章站 2022-07-01 08:51:15
随着数据分析相关领域变得火爆,最近越来越多的被问到:数据分析如何从头学起?其中很多提问者都是商科背景,之前没有相关经验和基础。 我在读Buisness Analytics硕士之前是商科背景,由于个人兴趣爱好,从大三开始到现在即将硕士毕业,始终没有停下自学的脚步。Coursera和EDX等平台上大概上 ......

随着数据分析相关领域变得火爆,最近越来越多的被问到:数据分析如何从头学起?其中很多提问者都是商科背景,之前没有相关经验和基础。

我在读buisness analytics硕士之前是商科背景,由于个人兴趣爱好,从大三开始到现在即将硕士毕业,始终没有停下自学的脚步。coursera和edx等平台上大概上过20多门网课,datacamp上100多门课里,刷过70多门。这篇文章是想谈一谈个人的数据分析学习经验,希望对想要入门这个领域的各位有帮助。

1. 基本工具

学习数据分析的第一步,是了解相关工具

excel

excel至是最基础的数据分析工具,至今还是非常有效的,原因是它便于使用,受众范围极广,且分析结果清晰可见。

相信大多数人都有使用excel的基本经验,不需要根据教材去学习了。重点掌握:基本操作的快捷键;函数:计算函数、if类、字符串函数、查找类(vlookup和match),一定要熟悉函数功能的绝对和相对引用; 数据透视表功能等。另外,excel可以导入一些模块来使用,典型的包括数据分析模块,作假设检验常用;规划求解,作线性规划和决策等问题非常有效。利用这些模块可以获得很不错的分析报告,简单且高效。

sql

数据分析的绝对核心!大部分数据分析工作都是对数据框进行的,在这个过程中,需要不断的根据已有变量生成新变量、过滤掉一些样本还有转换level。sql的设计就是为了解决这些问题。其他常用的数据操作工具,包括r语言的数据框、python里的pandas,基本都是借鉴了sql的思想,一通百通。

sql入门容易,它的语法极其简单,基本可以说上过一门相关的课或看过一本相关的书就可以了解大概,但融会贯通并能够进行各种逻辑复杂的操作,就需要长时间的锤炼了。

sql的学习建议,随便找一本书或者网课就好,因为主流的课程基本都是一个思路:先讲select、where、group by(配合简单的聚合函数)、order by这类单表操作,之后讲join进行多表连接。除此之外,必会的基本技能还应该包括window function和case when等等。学了基本的内容之后,就是找项目多练,不断提升。

r/python

熟练sql之后,对数据操作方面的内容就得心应手了。接下来更复杂的问题,如搜索和建模,则需要使用编程语言。

r vs python

目前最主流的数据分析编程语言就是r和python,网上遍是关于这两者的争论,有兴趣的可以简单看一下,但不用陷入过度的纠结。我个人的经验来看,熟练两者其中的任何一个都可以胜任数据分析中的大部分工作,不存在某一个语言有明显缺陷的情况。

这里不想大篇幅的比较两者,但是想简单的说一下两者的侧重点:

r语言是为了解决统计问题而设计的,因此它有一个很人性化的地方:最大程度的简化语言,从而让分析人员忽略编程内容,直面数据分析。也因为是统计语言,很多基本的统计分析内容在r里都是内置函数,调用十分便捷。此外,r的报告能力很强,大部分模型库在训练模型后都会提供很多细节,也比较容易通过rmd转换成优美的doc/pdf/html。

python先是一门general的编程语言,之后才是数据分析工具。初学python,语法肯定是不如r容易理解的。但使用到后来,当越来越多的需要自己定义时,python的优势就显现出来了。另外,python在数据量大时速度会比较快。

至于先学哪一个,需要结合自己的规划来看:如果最终两个都要学,那我毫不犹豫的建议从r开始;如果两个选一个学的话,我目前倾向于python,不过如果你确定自己以后只做业务方面的内容,那r可能更好一些。另外,如果有专注的领域的话,那么要结合自己的领域来定,比如搞投资分析的可以看一看r语言的portfolioanalytics库,大概就明白,说r语言把编程简化专注结果所言非虚。

r语言学习

当然无论入门哪种语言,学习路径都很重要。r语言的学习建议从基础数据结构开始,了解r中的vector、dataframe和list等结构,对语法有基本的理解。之后建议学习dplyr和ggplot2这两个库,两者分别是数据操纵和可视化库,学过之后可以做一些基本的数据项目了。学习平台首推datacamp,是付费的但绝对物有所值,没有比边学边练更好的学习方式了。此外推荐一本r语言实战(r in action),可以当作学习手册。

python学习

包括我在内的很多同学都把coursera上的python for everyone当作启蒙教材,这是一门很好的课程,但对于专注数据分析的python使用者而言,课程没有提供最完美的学习路径。学习python也应该从数据结构开始,list、dictionary、tuple这些数据结构要了解。之后建议学习numpy、pandas和matplotlib,分别是矩阵库、数据框库和可视化库,基本就算是入门了。学习python,datacamp依然是个很不错的平台,但是资源不如r丰富。首推一本叫《利用python进行数据分析》(python for data analysis)的教材,直接传授数据分析最需要的编程技能,熟悉书中的知识基本就可以说学会python数据分析的基本操作了。

 

2. 描述性分析和统计基础

了解基本工具之后,还要拥有相关的知识才能正式开始数据分析。分析的基础是统计知识,相信大部分人都学过概率和统计相关的课程,自己基础是否够扎实,可以考一考自己:均值/标准差/相关性等指标,各种探索性分析场景用哪种可视化方法比较好,抽样分布/置信区间/假设检验,贝叶斯理论等。在这些相关内容没有彻底熟练之前,建议不要认为自己基础已经足够扎实了,这些内容都是值得反复学习的。另外,可以结合数据分析工具来学习,比如用r或python进行双均值假设检验(当然这里是手写而不是调用函数),对理解编程和理解统计都有帮助。

这里推荐《深入浅出统计学》和《深入浅出数据分析》两本书,可以作为入门,也可以作为复习,当然如果统计背景比较深,没必要看了,太基础了。也推荐coursera杜克大学的statistics with r,前三门课质量都比较高,需要有r的基本知识,可以边学统计边练r。

描述性分析真的很重要,这里需要再强调一下。如果真的想做数据分析,尤其是业务导向的数据分析,建议一定要重视这部分。平时做项目也是一样的,拿到数据后先彻底的理解数据,不要急着往模型里放。

 

3. 机器学习

终于到了机器学习,我猜对于很多数据分析学习者,机器学习是本质目的。机器学习是有不同种学法的:对于业务数据分析者,了解各类模型的使用场景、优劣势,基本就足够了;对于偏数据科学和挖掘的人员来说,要深入理解每一种模型,至少得写出推导步骤;更深入的算法导向人员,还要有从头实现算法的能力。这篇文章的目标读者主要是第一类和第二类。

学习机器学习模型可以从理解模型和实现两个方向入手,目前主流的实现工具还是r和python。datacamp上有很多用r和python进行机器学习的课程,看了之后基本可以了解机器学习模型在做什么,平时的应用场景大概怎样。流行的模型一定要理解,像逻辑回、支持向量机(核函数)、k邻近、朴素贝叶斯、集成学习模型(随机森林和各类boosting)都是很常用的模型;bias-variance tradeoff、标准化、正则化、交叉检验、重采样,这些概念也要了解。

如果想进一步深入的去理解模型细节,那么微积分和线性代数是必要的先修课,否则无法继续进行了。当然如果决定进一步学习细节,需要看更多的教材,上一些相关课程。

网上的相关课有很多,目前最火爆的肯定是coursera andrew ng的机器学习。这门课也是我的入门课,确切的说我第一次学这门课的时候,甚至还不会调包,也不太会编程,就跟着一步一步做,很艰难的完成了作业。做到神经网络那部分,当时实在写不出来,去网上找答案看。到现在,这门课我应该看过有五遍了,基本上每隔几个月重新看一下都有新的收获。

coursera还有另一系列的机器学习课来自华盛顿大学,质量也很高,课程用python(缺陷是使用的库不是pandas和sklearn,而是授课者自己开发的库),很大一部分内容是手写模型,很有助于打好基础。此外,因为这是一系列课,所以覆盖范围要比andrew ng的课广一些,回归问题、分类问题、非监督问题,都单独成为一门课程。

很多机器学习的教材写的也不错,比如an introduction to statistical learning(isl)和machine learning with r,两者都是讲模型的数学推导,并用r语言实现。

机器学习确实是很深奥的东西,如果时间允许建议经典的课程和教材都看一看,有的课甚至可以多看几遍。

4. 更进一步

如果以上内容都比较扎实的完成,可以说能够进行大部分项目了,也对数据分析有着很成体系的理解。之后可以结合自己的需求,深入学习更多的内容,或者结合实际项目练习。尝试着找一些完整的项目去做,比如说kaggle就是很不错的平台,会提供数据集进行使用。kaggle的入门赛也做的很好,简单易懂,让新人不会太迷茫。

如果有额外兴趣的话,还是有很多更深奥的东西值得学习的,比如深度学习范围的内容或者大数据的相关技术等。

5. 结尾的话

很多人在入门数据分析时候都会问:我从零开始,多久能学会机器学习?其实取决于你怎么理解会,如果从头学python,到能使用sklearn调出机器学习模型,大概一个月就完成了。但深入的去理解以上内容,确实不是一年半载能完成的。

我见过很多人追求速成,也确实速成了。遇到项目基本就是把数据导进来,不做特征处理,然后调出各种模型(其中不乏像神经网络和boosting这种比较高级的模型),每个用默认参数试一次,看看效果。然而数据分析没那么简单,也没那么fancy。做一个项目,80%的时间都在准备,涉及到许多数据清理和操作,其中的一些东西是任何教材和课程都无法传授的。

还是更建议一步一个脚印的去学习,边学边做、边学边想,记好学习笔记,并定期总结学习心得。打好基础不可急于求成,才是学习的最好途径。

 

如果觉得这篇文章对你有帮助,请把文章推荐给你身边的朋友!我还是要推荐下我自己创建的大数据资料分享群142973723,这是大数据学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习大数据资料和入门教程。