时隔5年,《利用Python进行数据分析》在2022年9月20日推出了最新的第3版。在此次新版“鼹鼠书”中,Wes亲自讲解了最新的1.4版的Pandas。这次,很高兴能受邀翻译第3版的《利用Python进行数据分析》,22年11月底翻译好了本书,还有不到一个月,这本书应该就快能付梓啦。
这5年中,数据分析又发生了很大的变化。尤其是眼见着OpenAI的GPT横扫技术领域,让以往一切模型方法看起来都像“小孩子的游戏”一样。大模型成为了海量信息和有效信息之间的新桥梁,而上一座桥梁是以谷歌的PageRank为代表的搜索算法。幸好,因为数据分析是直接跟数据打交道,并且要根据数据生成决策,这方面是人的强项,暂时不会受到影响。
相比GPT,pandas本身也在快速进步着。实际上,就在二月中旬,pandas发布了2.0大版本,引入了PyArrow、优化了内存计算方法、优化了索引结构,以后用Pandas进行机器学习和大数据分析工作就更加便捷了。
第三版多了41页内容,pandas升级为1.4.0、Python升级为3.10。第三版最大的变化是紧贴pandas升级,主要是新增了方法和特性的内容。另外,第三版有作者的在线开源电子版了,可以从GitHub地址和Gitee地址下载本书代码。
第三版目录略有调整,不如第二版和第一版的变化大:
曾经不止一次听别人抱怨,pandas的知识点分散、零碎、不便于记忆。在细节上,作者这次在新版中摒弃了许多容易造成记忆混乱的用法。比如,用axis = "columns"
替代axis = 1
,简写方式破坏了代码的可读性,作者修改了许多类似的编程细节。新版对初学者更为友好了!
我们在进行数据分析时,用到的最主要的是结构化数据。结构化数据通常是如下数据:
大部分数据集都能被转化为更加适合分析和建模的结构化形式,也可以将数据集的特征提取为某种结构化形式。例如,一组新闻文章可以被处理为一张词频表,而这张词频表就可以用于情感分析。
NumPy,是Numerical Python(数值Python)的简称,它提供了多种数据结构、算法以及大部分涉及Python数值计算所需的接口。NumPy提供了以下功能:
NumPy非常适合作为数据容器。对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python数据结构高效得多。此外,由底层语言(比如C和Fortran)编写的库可以直接操作NumPy数组中的数据,无需将数据复制到其他内存中后再操作。因此,许多Python的数值计算工具要么使用NumPy数组作为主要的数据结构,要么可以与NumPy进行无缝交互操作。
pandas的作者就是本书作者Wes McKinney。
pandas兼具NumPy的高性能数组计算能力以及表格和关系型数据库(例如SQL)的灵活数据操作功能,提供了便捷的索引功能,可以完成重塑、切片、切块、连接和选取数据子集等操作。pandas具有如下功能:
Matplotlib是最流行的用于绘制图表和其他二维数据可视化的Python库。
IPython是交互性的Python编程终端。IPython可以方便地访问系统的shell和文件系统,在许多场景中就无需在终端窗口和Python会话中来回切换。
Jupyter是一个更多语言交互计算工具,支持40多种编程语言。IPython现在可以作为Jupyter使用Python的内核(一种编程语言模式)。Jupyter notebook还可以编写Markdown和HTML文档。
SciPy是专门解决科学计算中多种基本问题的包的集合。以下是其中的一些模块:
scipy.integrate
:数值积分例程和微分方程求解器。
scipy.linalg
:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。
scipy.optimize
:函数优化器(最小化器)以及求根算法。
scipy.signal
:信号处理工具。
scipy.sparse
:稀疏矩阵和稀疏线性系统求解器。
scipy.special
:SPECFUN的封装器,SPECFUN是一个实现了许多常用数学函数(例如gamma函数)的FORTRAN库。
scipy.stats
:标准连续和离散概率分布(密度函数、采样器、连续分布函数)、各种统计检验方法,以及各类描述性统计。
scikit-learn是一个通用的机器学习工具包,它包括以下子模块:
statsmodels是一个统计分析包,起源于斯坦福大学统计学教授Jonathan Taylor,他设计了多种流行于R语言的回归分析模型。Skipper Seabold和Josef Perktold在2010年正式创建了新的statsmodels项目,随后汇聚了大量的使用者和贡献者。受到R语言公式系统的启发,Nathaniel Smith开发了Patsy项目,提供了statsmodels的公式或模型的规范框架。
与scikit-learn相比,statsmodels包含经典统计学(主要是频度)和计量经济学的算法。它包括如下子模块:
statsmodels更关注于统计推断,提供不确定性估计和参数p值参数检验。相反的,scikit-learn更注重预测。
从Conda网站下载Python最新版本的Miniconda安装包。根据提示安装即可。
安装好之后,在终端输入python
命令,可以看到如下相似的输出,就说明安装正确了:
(base) C:\Users\Wes>python
Python 3.9 [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
要退出Python命令行,输入命令exit()
后按下回车键。
还是从Miniconda的下载页找到下载链接:
Linux上的安装文件是sh脚本,在Linux上下载脚本的命令是:
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh
下载下来之后,再使用如下命令进行安装:
sh Miniconda3-py310_23.1.0-1-Linux-x86_64.sh
之后,系统会询问用户在哪里放置Miniconda的文件。推荐将文件安装到默认的主目录,例如/home/USER/miniconda(USER是用户名)。
Miniconda安装包会询问用户是否愿意修改命令行脚本,以自动激活Miniconda。为了以后方便使用,推荐用户这么做(选择yes
)。
完成这些安装步骤后,打开一个新的终端窗口,输入python
命令,确认安装的是最新的Miniconda:
(base) $ python
Python 3.9 | (main) [GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
要退出Python命令行,输入exit()
后按下回车键,或按快捷键Ctrl-D。
在苹果电脑上安装Miniconda也比较类似,就是需要注意根据处理器芯片选择不同的安装包:
我的电脑是因特尔芯片,下载如下脚本:
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-MacOSX-x86_64.sh
执行脚本,进行安装:
sh Miniconda3-py310_23.1.0-1-MacOSX-x86_64.sh
将conda-forge配置为默认的包安装方式:
(base) $ conda config --add channels conda-forge
(base) $ conda config --set channel_priority strict
为了使操作环境更为纯净,使用虚拟环境,虚拟环境的名字是pydata-book
,命令如下:
(base) $ conda create -y -n pydata-book python=3.10
解释一下这条命令,conda create
的意思是用conda创建虚拟环境,-y
的意思是使所有确认的结果都为yes
,-n pydata-book
的意思是虚拟环境的名字是pydata-book
,python=3.10
的意思是Python的版本是3.10。
安装完毕后,使用conda activate激活环境:
(base) $ conda activate pydata-book
(pydata-book) $
看到$
前出现了(pydata-book)
,就说明处于虚拟环境pydata-book
了。
用命令conda info
可以查看当前系统都有什么虚拟环境。
然后,用conda install
安装包(优先使用conda安装包,如果conda
安装不上,则使用pip
命令):
(pydata-book) $ conda install -y pandas jupyter matplotlib
使用如下命令升级包:
conda update package_name
或,
pip install --upgrade package_name
推荐使用Pycharm或VS Code。