数据分析就是对数据分析,具体的说,就是运用适当的统计方法和工具,对数据进行处理和分析,提取有价值的信息;数据挖掘是从大量数据中,通过统计学、机器学习等方法,挖掘出未知的、有价值的信息,找到隐藏的规则。从本篇文章开始,我会持续更新数据分析与挖掘入门的系列文章。
搭建python开发平台
为什么选择python语言?
A:
Python是一门简单易学且功能强大的编程语言。它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程。针对数据分析来说,在大多数数据任务上,python的运行效率已经可以媲美C/C++语言。除此之外,随着numpy、scipy、pandas、matplotlib等众多程序库的开发,python在科学数据中的编程效率显著提高。
我们使用 python 进行丰富的科学计算时,需要依赖 python 核心程序,以及一些第三方扩展库。对于在 python 中摸爬滚打过的老油条们,完全可以自行配置自己python版本以及第三方库,这样会节省很多空间。但是对于普遍的读者来说,我认为在处理包的过程中还是有些麻烦事的。
因此在这里推荐一款工具—— Anaconda 。它将科学计算所需要的模块都编译好并打包成一个完整的集成工具。
Anaconda的特点:
包含众多科学、数学、数据分析的 python 包
完全开源免费
额外的优化收费,但是对于个体的初学者,完全不需要
全平台支持(Linux、Windows、Mac),python 版本自由切换
现在开始安装,首先进入官网,下载对应版本的安装包,包括系统(Linux、Windows、Mac)和 python 版本(python版本尽量选3.x,毕竟是趋势)。
记得点上添加到环境变量,剩下的都是些傻瓜式操作了,没有什么要强调的了。为了后续方便使用,记得将默认 python 解释器更改为 anaconda 下的python解释器,尤其是像Linux系统这样,它自带了python解释器。关于版本控制可以自己摸索一下,或者网上有很多,如果还有不清楚的可以后台告诉我,今天在这里就先不解释了。
安装好的 anaconda 以及附带了很多东西,安装过程中会提示是否安装VSCode,可以不安装,毕竟毕竟大,有个适合自己的工具就足够了。同时我们进行数据分析时要用到的几乎所有包都已经在其中了,完全不用考虑,如果后去还需要自己安装第三方库的话,可以使用 conda 命令安装:
conda install packageName
Jupyter Notebook:是基于网页的交互式计算工具,里面可以编写代码以及运行代码,同时可以编写说明文档,在数据分析中是很常用的一个工具。其内核是 ipython ,后缀名为 ipynb 就是 ipython notebook 的缩写。windows中打开方式为 cmd 下输入 jupyter notebook,Linux下为 ipython notebook。
spider:也是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑、交互测试、调试等特性,它类似于MATLAB风格,熟悉MATLAB的开发者可以很快上手。
python数据分析工具
python 本身的数据分析功能并不强,需要安装一些第三方扩展库来辅助。如果你已经安装好了 Anaconda 发行版,那么它已经自带了 numpy、scipy、pandas、matplotlib 和 scikit-learn 等第三方库。
扩展库 | 简介 |
Numpy | 提供数组支持,以及相应的高效处理函数 |
Scipy | 提供矩阵支持,以及矩阵相关的数值计算模块 |
Matplotlib | 强大的数据可视化工具、作图库 |
Pandas | 强大、灵活的数据分析和探索工具 |
StatsModels | 统计建模和计量经济学,包括描述统计、统计模型估计和推断 |
Scikit-Learn | 支持回归、分类、聚类等强大的机器学习库 |
Keras | 深度学习库,用于建立神经网络以及深度学习模型 |
Gensim | 用来做文本主题模型的库,文本挖掘可能用到 |
在之前已写过了python数据分析三大工具的文章,这里就不介绍了,可以在公众号中查找,或者点击文章末尾链接。
Scipy
Numpy 提供了多维数组功能,而scipy 提供了真正的矩阵以及大量基于矩阵运算的对象和函数。Scipy 包含的功能有:最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,均可用于数据挖掘与建模。Scipy 依赖于 numpy ,安装之前需要先安装 numpy 。
# 举个栗子:求解非线性方程组
# 2x1-3x2^2=1,x1^2-x2=2
# 导入求解方程组的函数
from scipy.optimize import fsolve
def f(x):
x1 = x[0]
x2 = x[1]
return [2*x1 - x2**2*3 - 1, x1**2 - x2 - 2]
# 输入初值[1,1]并求解
result = fsolve(f, [1,1])
print(result)
out:
[1.70146165 0.89497175]
[Finished in 16.6s]
StatsModels
Pandas 着重数据的读取、处理和探索,而 StatsModels 则更注重数据的统计建模分析。它支持与 pandas 进行数据交互,二者组合起来会很强大。StatsModels 依赖于 pandas ,也依赖于 pandas 所依赖的库。
Scikit-Learn
它是 python 下强大的机器学习工具包,提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测和模型分析等。Scikit-Learn 依赖于 numpy、scipy 和 matplotlib ,如果需要自己安装一定要注意先将依赖的包安上。
Keras
上面提到了 Scikit-Learn 包含了大量的模型,但是缺少一种强大的模型——人工神经网络。人工神经网络功能非常强大,也许刚听到会觉得很复杂,其实原理还是比较清晰的,在语言处理、图像识别等领域有着重要的作用。它是基于 Theano 的深度学习库,Theano 自己就可以搭建高效的神经网络模型,但是并不容易上手,因此出现了 Keras 。Keras 依赖于 numpy、scipy、Theano ,而 Theano 需要 C++ 的编译器,Linux 下自带,windows 下需要自行安装,这里不介绍,而且在windows下的效率会大打折扣。Theano 还实现了 GPU 加速,如果想要尝试需要花些心思。
Gensim
简单介绍一下,它是一个处理语言方面很强大的库,用到的时候可以现查,至少提前得知道有这么个库。能出来很多东西,例如文本相似度之类,它也需要 C++ 编译环境,在 Linux 中运行更方便。