Python数据分析学习路线个人总结

Python与算法社区

共 4665字,需浏览 10分钟

 ·

2022-01-15 05:40

点击上方蓝色字体,关注程序员zhenguo


你好,我是 zhenguo

数据分析人人都有必要掌握一点,哪怕只是思维也行。下面探讨Python数据分析需要学习的知识范畴,结合自己的经历和理解,总结的学习大纲,有些章节带有解释,有些没有。当然,关于学习范畴,可能每个人的理解都不太一样,以下仅供参考。


1 数据分析思维


数据分析属于分析思维的一个子类,有专门的数据方法论。只有先养成正确的分析思维,才能使用好数据。

大多数人的思维方式都依赖于生活和经验做出直觉性的判断,最直观的体现是,在数据和业务分析中有时无从下手。

什么是好的分析思维?

用两张在网络上流传甚广的图片说明

思维模式(图片来源网络)

对应以下两种思维:

我们12月的销售额度下降,我想是因为年终的影响,我问了几个销售员,他们都说年终生意不太好做,各家都收紧了财务预算,谈下的几家费用也比以前有缩水。我对他们进行了电话拜访,厂家都说经济不景气,希望我们价格方面再放宽点。

我们12月的销售额度下降,低于去年同期和今年平均值,可以排除掉大环境的因素。其中A地区下降幅度最大,间接影响了整体销售额。通过调查发现,A地区的市场因为竞争对手涌入,进行了低价销售策略。除此之外,B地区的经济发展低于预期发展,企业缩减投入。

第一个分析思维是依赖经验和直觉的线性思维,第二个分析思维则注重逻辑推导,属于结构化的思维。两种思维往往会导致不同的结果。

1.1 金子塔原理

麦肯锡思维中很重要的一条原理叫做金字塔原理,它的核心是层次化思考、逻辑化思考、结构化思考。

1.1.1 什么是金字塔?

任何一件事情都有一个中心论点,中心论点可以划分成3~7个分论点,分论点又可以由3~7个论据支撑。层层拓展,这个结构由上至下呈金字塔状。

1.1.2 结构化思维

金字塔(图片来源网络)

1.1.3 核心法则:MECE

金字塔原理有一个核心法则MECE,全称 Mutually Exclusive Collectively Exhaustive,论点相互独立,尽可能多的列举。

1.1.4 假设先行

首先得有一个思考作为开始。这是什么意思?因为金字塔是从上而下,需要有一个中心论点,也就是塔尖。我们可以先提出一个问题,比如此产品的核心功能是某某功能吗?

1.2 二八法则

1.2.1 20%的分析过程决定80%的分析结果

1.2.2 抓住关键因素

以上节选的两个分析思维,都能在麦肯锡问题分析与解决技巧中找到原型,感兴趣的可查看下面这本书。




2 数据获取


2.1 大数据平台提取

各个公司都可能有自己专属的大数据平台,进入公司要首先掌握如何从这上面拿去我们需要的业务数据

2.2 第三方服务接口

合作企业或公司购买的服务接口,我们可以直接调用拿到数据。

2.3 开源公开数据集

推荐一些数据集

2.4 爬虫爬取网站数据

python的常用包:

  • requests

  • json

  • BeautifulSoup

requests库就是用来进行网络请求的,说白了就是模拟浏览器来获取资源。

由于我们采集的是api接口,它的格式为json,所以要用到json库来解析。

BeautifulSoup是用来解析html文档的,可以很方便的帮我们获取指定div的内容。


3 数据存储


3.1 SQL分组,聚合,多表join操作

groupby, aggregate,join操作

join操作可参考 Python与算法社区 公众号

3.2 大数据平台Hadoop

大数据架构,分布式存储,详细自行查阅

3.3 Mysql

这个大家应该都不陌生

3.4 hive 拉链表

拉链表的知识大家需要好好理解体会,dp 的状态 active 和 history



4 数据清理知识


4.1 理解数据背后的业务,千万不要忽视!

我们在拿到需要分析的数据后,千万不要急于立刻开始做回归、分类、聚类分析。

第一步应该是认真理解业务数据,可以试着理解去每个特征,观察每个特征,理解它们对结果的影响程度。

然后,慢慢研究多个特征组合后,它们对结果的影响。

4.2 明确各个特征的类型

如果这些数据类型不是算法部分期望的数据类型,你还得想办法编码成想要的。比如常见的数据自增列 id 这类数据,是否有必要放到你的算法模型中,因为这类数字很可能被当作数字读入。

某些列的取值类型,虽然已经是数字了,它们的取值大小表示什么含义你也要仔细捉摸。因为,数字的相近相邻,并不一定代表另一种层面的相邻。

4.3 找出异常数据

统计中国家庭人均收入时,如果源数据里面,有王建林,马云等这种富豪,那么,人均收入的均值就会受到极大的影响,这个时候最好,绘制箱形图,看一看百分位数。

4.4 处理缺失值

现实生产环境中,拿到的数据恰好完整无损、没有任何缺失数据的概率,和买彩票中将的概率差不多。

数据缺失的原因太多了,业务系统版本迭代, 之前的某些字段不再使用了,自然它们的取值就变为 null 了;再或者,压根某些数据字段在抽样周期里,就是没有写入数据……

4.5 头疼的数据不均衡问题

理论和实际总是有差距的,理论上很多算法都存在一个基本假设,即数据分布总是均匀的。这个美好的假设,在实际中,真的存在吗?很可能不是!

算法基于不均衡的数据学习出来的模型,在实际的预测集上,效果往往差于训练集上的效果,这是因为实际数据往往分布得很不均匀,这时候就要考虑怎么解决这些问题。下面是一本数据清洗不错的书籍:



5 Python核心知识


5.1 理解Python的解释性

Python 是解释型语言,对于 Python 刚刚入门的小伙伴,可能对解释性有些疑惑。不过,没关系,我们可以通过大家已经熟悉的编译型语言,来帮助我们理解 Python 的解释性。

编译型语言,如 C++、Java,它们会在编译阶段做类型匹配检查等,因此,数据类型不匹配导致的编译错误,在编译阶段就会被检查出来,例如:

  1. Intger a = 0;

  2. Double b = 0.0;

  3. a = b; // Double类型的变量 b 试图赋值给 Integer 型的变量 a, 编译报错

  4. // 因为 Integer 类型 和 Double 类型 不存在继承关系,

  5. // 类型不能互转

但是,Python 就不会在编译阶段做类型匹配检查,比如,Python 实现上面的几行语句,会这样写:

  1. a = 0 # 不做任何类型声明

  2. b = 0.

  3. a = b # 这种赋值,Python 会有问题吗?

答案是不会的。此处就体现了 Python 的解释特性,当我们把 0 赋值给 a 时,Python 解释器会把它 a 解释为 int 型,可以使用内置函数 type(variable) 显示地检查 variable 的类型:

  1. In [70]: type(a)

  2. Out[70]: int


  3. In [69]: type(b)

  4. Out[69]: float


  5. In [71]: a = b # 在把 float 型 b 赋值给 a 后, # a 就被解释为float


  6. In [72]: type(a)

  7. Out[72]: float

在把 float 型 b 赋值给 a 后, a 就被解释为 float.

5.2 list,dict,tuple,set

深拷贝和浅拷贝的区别

5.3 Python列表生成式

如何灵活使用

5.4 Python函数式编程

闭包问题

5.5 位置参数和关键字参数

如果介绍 Python 入门,不介绍函数的位置参数 ( positional argument ) 和关键字参数( keyword argument ) ,总是感觉缺少点什么,它们在 Python 函数中到处可见,理解和使用它们,为我们日后深入 Python 打下坚实的根基。


6 Excel数据分析


6.1 Excel处理10万条以内数据

6.2 以SUM函数为首的求和家族

6.3 以VLOOKUP函数为首的查找家族

6.4 以IF函数为首的逻辑函数家族

大家自行查阅学习


7 Pandas数据预处理


7.1 基于Python的向量化增强

7.2 必须掌握的传播机制

广播发生的条件

7.3 一维Series和二维DataFrame

7.4 Pandas中的20个统计学函数

20个统计学函数

7.5 Pandas三个函数搞定缺失值

7.6 1个函数搞定数据透视



8 数据建模分析


8.1 统计学基础知识

首先,入门数据分析需要必备一些统计学的基本知识,在这里我们简单列举几个入门级的重要概念。概率,平均值,中位数,众数,四分位数,期望,标准差,方差。在这些基本概念上,又衍生出的很多重要概念,比如协方差,相关系数等。

这一些列常用的统计指标,都在强大的数据分析包 Pandas 中实现了,非常方便。

8.2 统计量描述

说统计学是一种基于事实的演绎学问,它是严谨的,可以给出确切解释的。

不过,机器学习就不一样了,它是一门归纳思想的学问,比如深度学习得出的模型,你就很难解释其中的具体参数为什么取值为某某某。它的应用在于可以提供一种预测,给我们未来提供一种建设性的指导。

数据分析师需要了解机器学习的基本理论、常见的那十几种算法,这样对于我们做回归、分类、聚类分析,都是不可缺少的。

8.3 机器学习回归分析

三 个假定是?
如何建立线性回归模型?
最大似然估计求参数?
梯度下降求解优化问题?
手写不调包实现的 5 个算子
手写不调包实现的整体算法框架

8.4 基本的分类、聚类算法

高斯混合模型:聚类原理分析

高斯混合模型:聚类求解

高斯混合模型:求解完整代码

高斯混合模型:不调包多维数据聚类分析

K-Means算法



8.5 特征工程提高分析精度

一般来说,特征工程大体上可以分为三个方面,一是特征构造,二是特征选择,三是特征生成。


9 数据可视化


9.1 必备的绘图原理知识

拿使用较多的 matplotlib 为列,整个图像为一个Figure 对象,在 Figure 对象中可以包含一个或多个 Axes对象,每个Axes对象都是一个拥有自己坐标系统的绘图区域。

Axes 由 xaxisyaxistitledata 构成,xaxis 由坐标轴的线 ,tick以及label构成。

9.2 matplotlib绘图

9.3 绘图必备100行代码

参考:关于数据分析的学习路线,我准备写一篇 2 万+的 chat



10 数据挖掘分析


10.1 正则表达式

学习正则表达式语法,主要就是学习元字符以及它们在正则表达式上下文中的行为。常见的元字符比如普通字符、标准字符、特殊字符、限定字符(又叫量词)、定位字符(也叫边界字符)。

10.2 决策树

决策树

对决策树剪枝

sklearn分类和回归

提炼出分类器算法

10.3 贝叶斯方法

朴素贝叶斯分类器:例子解释

朴素贝叶斯分类:拉普拉斯修正

单词拼写纠正器python实现

半朴素贝叶斯分类器

10.4 集成学习方法

XGBoost思想

XGBoost模型构造

XGBoost 安装及实战应用   

10.5 NLP

一文了解自然语言处理的每个范畴用到的核心技术,难点和热点(1)
NLP入门:CNN,RNN应用文本分类,个性化搜索,苹果和乔布斯关系抽取(2)


zhenguo原创精华PDF,倾情奉献给你,后台回复对应关键词下载
  Python专题 | 数据分析手册 | 算法刷题100

长按关注,回复宝书

浏览 45
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报