文章目录
一、本书的内容
-
本书讲的是利用Python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。
-
目标是介绍Python编程和用于数据处理的库和工具环境,掌握这些,可以让你成为一个数据分析专家。
-
重点是Python编程、库,以及用于数据分析的工具
本书中的数据指的是结构化数据
:
-
表格型数据,其中各列可能是不同的类型(字符串、数值、日期等)。
-
比如保存在关系型数据库中 或以制表符/逗号为分隔符的文本文件中的那些数据。
-
多维数组(矩阵)。 通过关键列(对于SQL用户而言,就是主键和外键)相互联系的多个表。
-
间隔平均或不平均的时间序列。
二、重要的python库介绍
1. Numpy
Numpy:Numerical Python
numerical 英[njuːˈmerɪkl] 美[nuːˈmerɪkl]
adj. 数字的; 用数字表示的
它提供了以下主要功能:
数据结构
, 快速高效的多维数组对象ndarray函数
,1)用于对数组执行元素级计算的函数 , 2)用于直接对数组进行计算的函数I/O
, 用于读写硬盘上基于数组的数据集的工具数学
, 线性代数运算、傅里叶变换、以及随机数生成与更底层语言的交互
, 成熟的C API、, 用于Python插件和原生C、C++、Fortran代码访问NumPy的数据结构和计算工 具。
除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一个主要作用,即作为在算 法和库之间传递数据的容器。
对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python数 据结构高效得多。
2. Pandas
pandas:panel data
面板数据,这是多维结构化数据集在计量经济学中的术语)以及 Python data analysis(Python数据分析)
pandas 提供了快速便捷处理结构化数据的大量数据结构
和函数
。
本书用得最多的pandas对象是DataFrame
,它是一个面向列 (column-oriented)的二维表结构
另一个是Series
,一个一维的标签化数组对象
。
pandas它提供了复杂精细的索引功能,能更加便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
因为数据操作、准备、清洗是数据分析最重要的技能。
pandas是本书的重点。
3. matplotlib
Python 中常用的绘图库,能在跨平台的交互式环境生成高质量图形。
它非常适合创建出版物上用的图表。
matplotlib是使用最广泛的Python可视化库。
我们可以把它作为默认的可视化工具。
4. IPython和Jupyter Notebook
4.1 IPython
IPython是一个python的交互式shell,比默认的python shell好用得多。
支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数。
学习ipython将会让我们以一种更高的效率来使用python。
同时它也是利用Python进行科学计算和交互可视化的一个最佳的平台。
IPython提供了两个主要的组件
- 一个强大的
python交互式shell
- 供
Jupyter notebooks
使用的一个Jupyter内核(IPython notebook
)
IPython的主要功能如下:
- 运行
IPython控制台
- 使用
IPython
作为系统shell - 使用历史输入
TAB
不全- 使用
%run
命令运行脚本 - 使用
%timeit
命令快速测量时间 - 使用
%pdb
命令快速debug - 使用
pylab
进行交互计算 - 使用
IPython Notebook
4.2 Jupyter Notebook
由上可知,IPython可以认为是一个基于python的强化版shell。
而Jupyter Notebook就是基于这个强化版shell的 强化版Notebook。
Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
5.SciPy
SciPy是一组专门解决科学计算中各种标准问题域的包的集合,主要包括下面这些包:
-
scipy.integrate
:数值积分例程和微分方程求解器。 -
scipy.linalg
:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。 -
scipy.optimize
:函数优化器(最小化器)以及根查找算法。 -
scipy.signal
:信号处理工具。 -
scipy.sparse
:稀疏矩阵和稀疏线性系统求解器。 -
scipy.special
:SPECFUN(这是一个实现了许多常用数学函数(如伽玛函数)的Fortran库)的包 装器。 -
scipy.stats
:标准连续和离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计检验 方法,以及更好的描述统计法。
NumPy和SciPy结合使用,便形成了一个相当完备和成熟的计算平台,可以处理多种传统的科学计算问 题。
6. scikit-learn
2010年诞生以来,scikit-learn成为了Python的通用机器学习工具包
-
分类
:SVM、近邻、随机森林、逻辑回归等等。 -
回归
:Lasso、岭回归等等。 -
聚类
:k-均值、谱聚类等等。 -
降维
:PCA、特征选择、矩阵分解等等。 选型:网格搜索、交叉验证、度量。 -
预处理
:特征提取、标准化。
与pandas、statsmodels和IPython一起,scikit-learn对于Python成为高效数据科学编程语言起到了关 键作用。
虽然本书不会详细讲解scikit-learn,我会简要介绍它的一些模型,以及用其它工具如何使用这些模型。
7. statsmodels
与scikit-learn比较,statsmodels包含经典统计学和经济计量学的算法。包括如下子模块:
-
回归模型
:线性回归,广义线性模型,健壮线性模型,线性混合效应模型等等。 -
方差分析
(ANOVA)。 时间序列分析:AR,ARMA,ARIMA,VAR和其它模型。 -
非参数方法
: 核密度估计,核回归。 统计模型结果可视化。
statsmodels更关注与统计推断,提供不确定估计和参数p-值。
相反的,scikit-learn注重预测
。
同scikit-learn一样,我也只是简要介绍statsmodels,以及如何用NumPy和pandas使用它。
8. python工具包一览
总的来说,如果你想理解和处理手头的数据,就用 Pandas;如果你想执行一些复杂的计算,就用 Numpy 和 SciPy;如果你想将数据可视化,就用 Matplotlib。
这 4 个库在 Python 生态体系中的地位也不一样,相对来说 Numpy 最简单,处于最底层。国外有大神用一张图总结过 Python 生态体系中各个工具的层次:
作者:景略集智
链接:https://www.zhihu.com/question/37180159/answer/501189831
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
三、个人觉得不太重要的一些内容汇总
1.安装和设置
2.代码示例
本书大部分代码示例的输入形式和输出结果都会按照其在IPython shell或Jupyter notebooks中执行时 的样子进行排版:
In [5]: CODE EXAMPLE
Out[5]: OUTPUT
但你看到类似的示例代码,
就是让你在 in 的部分输入代码,
按Enter
键执行(Jupyter中是按ShiftEnter
)。
然后就可以在 out 看到输出。
3.引入惯例
Python社区已经广泛采取了一些常用模块的命名惯例:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm
也就是说,当你看到np.arange时,就应该想到它引用的是NumPy中的arange函数。
这样做的原因是:
在Python软件开发过程中,不建议直接引入类似NumPy这种大型库的全部内容
(from numpy import *)。
4.行话
由于你可能不太熟悉书中使用的一些有关编程和数据科学方面的常用术语,
所以我在这里先给出其简单定义:
数据规整(Munge/Munging/Wrangling)
指的是将非结构化和(或)散乱数据处理为结构化或整洁形 式的整个过程。这几个词已经悄悄成为当今数据黑客们的行话了。Munge这个词跟Lunge押韵。伪码(Pseudocode)
算法或过程的“代码式”描述,而这些代码本身并不是实际有效的源代码。语法糖(Syntactic sugar)
这是一种编程语法,它并不会带来新的特性,但却能使代码更易读、更易写。
四、 参考资料
[1] 如何系统地学习Python 中 matplotlib, numpy, scipy, pandas? - 景略集智的回答 - 知乎
https://www.zhihu.com/question/37180159/answer/501189831
[2]IPython介绍 -KLeonard -CSDN
https://blog.csdn.net/gavin_john/article/details/53086766
[3]Jupyter Notebook介绍、安装及使用教程 -Raxxie - 简书
https://www.jianshu.com/u/dcba14ef604d