33

数据分析到底该怎么学?

 4 years ago
source link: https://www.tuicool.com/articles/uI7ZjmZ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

互联网发展至今,已离不开数据,使得很多公司格外青睐具备数据分析能力的人。迎着这一浪潮,很多人都跃跃欲试,想要掌握数据分析的技能,让自己在职场上更有主动权。

但万事开头难,摆在很多人面前的困扰是,我到底该怎么学数据分析?

  • 我需要掌握 Excel 吗?
  • 数据分析对统计学和数学要求高吗?
  • 没有编程能力还能学数据分析吗?
  • Python 语言和 R 语言我该选择哪一个?

相信这是不少人的疑惑,之所以会出现这些问题,是因为很多人混淆了数据分析的概念。

广义上的数据分析包括了统计学、增长黑客、相关性分析等,更偏向产品运营, 而我们这里所说的数据分析,则是隶属于编程世界里的数据分析,是算法和技术的天下。

作为一个程序员,相信你更需要的是后者。学习数据分析,你最需要掌握的就是 Python 语言、数据预处理以及算法知识。

Python 语言贯穿于数据分析的整个过程,只有掌握 Python,你才能熟练地通过它做数据预处理,以及使用各种算法包。

掌握 Python 之后,你才会使用 Python 的各种机器学习库、第三方工具等,有了它们,数据预处理才会事半功倍。

算法是数据分析的精髓,只有掌握算法,你才能处理各种数据。

那么具体到这三点,该怎么学数据分析呢?

入门:掌握 Python

如果你刚接触数据分析,面对纷繁复杂的算法和工具不知所措,那么,首先你最需要掌握的就是 Python 语言。听起来是不是很不可思议?事实上,Python 是数据分析领域中当之无愧的王者语言,它封装了很多算法工具包,使用起来非常方便。

在专栏里,我用一篇文章快速帮你理解 Python 语言的基础语法,比如输入输出、循环语句、数据类型等。

除了 Python 语言之外, 你还需要了解 NumPy 和 Pandas 这两个第三方库。 NumPy 提供的数据结构是 Python 数据分析的基础,它可以让 Python 的科学计算更加高效。Pandas 则是一个含有更高级数据结构和分析能力的工具包,它的核心数据结构是 Series 和 DataFrame。基于这两种结构,我们可以很方便地处理数据。

yARbA3q.jpg!web

R3EbeuR.png!web

新手:使用 Python 工具包进行数据预处理

当你入门 Python 后,接下来就算正式进入数据预处理阶段。“数据分析”涵盖两部分: 数据是基础,分析是过程 ,所以数据的前期准备工作也很重要。

这些工作主要包括:

  • 数据采集
  • 数据清洗
  • 数据集成
  • 数据变换
  • 数据可视化

不要小看这些工作,看似和“分析”不挂钩,其实,这些工作相当于分析前的“备菜过程”,没有“备菜”,何谈“掌勺”?

第一步,采集数据。

你可以用 Python 自动采集数据,也可以使用第三方平台,比如用八爪鱼来采集数据。我用两篇文章分别讲了这两种方法,其中都讲到了 XPath 这个路径语言,它可以通过元素和属性快速帮我们定位位置。

具体的实操方法,可以看下面两篇文章:

yIZjQ3R.jpg!web

很多时候,我们采集到的数据是杂乱的,可能会遇到各种问题,比如有缺失值、数据单位不统一、有重复值等。这个时候你可以采用“完全合一”的原则清洗数据。

当然,大家最感兴趣的可能还是数据可视化。运用各种酷炫的图片将数据的规律直观地呈现在众人面前,想想是一件特别有成就感的事情,比如天猫双十一的数据大屏等。我们可以用各种工具、编程语言做数据可视化,比如 DataV、Tableau、Python 或者 R 语言。

在专栏中,我主要是用 Python 的 Matplotlib 工具来做数据可视化。Matplotlib 是 Python 的可视化基础库,非常适合入门学习。下面的这几张图就是用 Matplotlib 绘制出来的。

A7FNfqI.png!web

可视化的具体操作方法:

进阶:掌握算法,学会实战

当你掌握了数据分析中基础的操作后,接下来就该正式处理数据了。为了进行数据挖掘任务,数据科学家们提出了各种算法 ,我在专栏中主要讲解了数据挖掘十大经典算法,根据用途,把它们分为四大类:

  • 分类算法: C4.5、朴素贝叶斯、SVM、KNN、Adaboost 和 CART
  • 聚类算法: K-Means、EM
  • 关联分析: Apriori
  • 连接分析: PageRank

你看到这些算法可能会发愁,看不懂怎么办呢?这个你完全不用担心,我在专栏里用了大篇幅内容来讲解这十大经典算法,每一个算法都有很多的案例去辅助你理解,还提供了一些数据库让你去实操,即学即用。

而实际上,你不需要了解这些算法具体的推导过程,只需要了解它们的原理即可。比如在数据挖掘算法中,大名鼎鼎的朴素贝叶斯算法和贝叶斯原理之间是什么关系?通过下面这张图,你可以直观地找到这个问题的答案。

63ma2qe.png!web

更多详细补充:

为什么我会说不需要了解算法具体的推导过程呢?因为在实际工作中,有很多工具已经帮我们封装好这些算法了,比如 sklearn,你在使用的时候,只要写一行代码,就可以直接引用,只需要调整参数就可以。

当然,虽说 sklearn 封装了数据挖掘所用到的绝大多数算法,但也有一些算法并不能覆盖到,比如图论和网络建模。那么,这个时候我们该怎么办呢?

你可以使用 NetworkX,一个用 Python 语言开发的工具,它内置了常用的图论与网络分析算法,可以方便我们进行网络数据分析。比如我们可以直接调用里面的 PageRank 算法,而不用在意具体的计算细节。在专栏中,我用 NetworkX 这一工具分析了希拉里邮件往来人员的关系和彼此之间的权重,帮我们非常直观地呈现出了以下结论图。

MnaUni6.png!web

当你掌握了多种算法之后,实际工作中还会遇到这类问题: 如何选择各种分类器,到底选择哪个分类算法,是 SVM,决策树,还是 KNN?如何优化分类器的参数,以便得到更好的分类准确率?

这两个问题,是数据挖掘核心的问题。当然对于一个新的项目,我们还有其他的问题需要了解,比如掌握数据探索和数据可视化的方式,还需要对数据的完整性和质量做评估。这些内容我在之前的课程中都有讲到过。

这里给到大家一个建议:使用 GridSearchCV 工具对模型参数进行调优。GridSearchCV 是 Python 的参数自动搜索模块,我们只要告诉它参数的范围,它就可以把所有情况都跑一遍,提供最优解。

我在专栏里用“信用卡违约率分析”的案例详细讲解了 GridSearchCV 的使用:

总之,你想要深入数据分析,算法与工具是你必须要攻克的两座大山。当然,我也希望你能认识到,工具只是帮我们实现目的,我们不可以被工具所奴役。数据分析与挖掘最重要的还是思考能力,收集什么数据,用什么工具分析,分析出什么样的结果,用什么方式呈现出来,都需要大家的思考与观察。这也是我在专栏里十分强调的点。

毕竟工具是别人的,但思维和实战经验,才是你自己的。

内容选自极客时间 数据分析实战 45 讲 专栏


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK