《利用Python进行数据分析·第3版》学习笔记1·准备环境

《利用Python进行数据分析·第3版》中文新版上市,Pandas更新为1.4,更新了许多内容。时隔5年,《利用Python进行数据分析》在2022年9月20日推出了最新的第3版。在新版“Python数分”中,Wes亲自讲解了最新的1.4版的Pandas。这次,很高兴能受邀翻译第3版《利用Python进行数据分析》,圆梦了。


第1章 准备环境
第2章 Python语法基础


这5年中,数据分析又发生了很大的变化。尤其是眼见着OpenAI的GPT横扫技术领域,让以往一切模型方法看起来都像“小孩子的游戏”一样。大模型成为了海量信息和有效信息之间的新桥梁,而上一座桥梁是以谷歌的PageRank为代表的搜索算法。幸好,因为数据分析是直接跟数据打交道,并且要根据数据生成决策,这方面是人的强项,暂时不会受到影响。

相比GPT,pandas本身也在快速进步着。实际上,就在二月中旬,pandas发布了2.0大版本,引入了PyArrow、优化了内存计算方法、优化了索引结构,以后用Pandas进行机器学习和大数据分析工作就更加便捷了。

第三版多了41页内容,pandas升级为1.4.0、Python升级为3.10。第三版最大的变化是紧贴pandas升级,主要是新增了方法和特性的内容。另外,第三版有作者的在线开源电子版了,可以从GitHub地址Gitee地址下载本书代码。

第三版目录略有调整,不如第二版和第一版的变化大:

  • 第4章NumPy基础新增了生成伪随机数;
  • 第7章数据清洗新增了扩展数据类型和分类数据,实际是把第二版中第12章的内容放到新版第7章里了;
  • 第11章时间序列新增了分组时间重采样。

曾经不止一次听别人抱怨,pandas的知识点分散、零碎、不便于记忆。在细节上,作者这次在新版中摒弃了许多容易造成记忆混乱的用法。比如,用axis = "columns"替代axis = 1,简写方式破坏了代码的可读性,作者修改了许多类似的编程细节。新版对初学者更为友好了!


《利用Python进行数据分析》的第1版是2012年11月出版的,第2版出版于2017年11月,第3版出版于2022年9月。正好是每年更新一个版本。

左至右:《利用Python进行数据分析》第1版、第2版、第3版

回想起来,乔布斯在2007年推出了iPhone,重新发明了手机,正式开启了移动互联网时代。不同于传统互联网,移动互联网进而催生了更大的数据量。2010年至2020年是移动互联网高速发展的十年,数据量呈指数级增长。

移动互联网数据的特点在于真实性。传统数据不涉及人和地点,而当拿着手机的用户行走在街道上,在各种商店中进行支付,浏览App中的应用,手机制造并收集了大量的数据。而这些数据不断地被互联网公司传输、存储起来,基于这些用户数据,各大公司又推出了新的业务,进而又能收集更多的数据。这是一个滚雪球的过程。

国际数据公司(IDC)的数据量预测

Python的崛起和数据量爆发密不可分。作为一门解释性高级语言,虽然Python的计算速度慢,但非常擅长网络IO处理,尤其擅长编写网络爬虫。再加Python入门非常容易,随着移动互联网用户逐渐增多,从事不同岗位的人都能轻松为Python编写各种应用库,Python的生态变得非常强大。如此一来,不仅用Python能解决数据源的问题,还能用于数据处理和人工智能。从2018年开始,Python的TIOBE指数不断提升,现在已成为排名最高的编程语言。

《利用Python进行数据分析》这本书的成功绝非偶然。《利用Python进行数据分析》一书的主角是pandas。从技术上讲,Pandas承接了原始数据,将其规整、清洗后成为高质量的结构化数据,再将高质量的数据进行可视化或训练模型。从业务上讲,Pandas上承爬虫,下启机器学习,Pandas的两个重要的数据结构Series和DataFrame已成为机器学习中重要的基础数据结构。

《利用Python进行数据分析》这本书的写作质量也是很高的。得益于本书作者也是Pandas库的创作者,知识点的组织很清晰。本书在讲解知识点时,总是用一段接一段并不是太长的文字进行讲解,文字中间穿插代码、注意事项、图片和表格,所以读起来一点也不枯燥。不仅如此,书的字里行间还能感受到作者对技术和开源的热爱。

掌握Pandas,能为许多工作奠定基础,比如商业分析、金融量化、机器学习。另外,Pandas对学校和科研单位的研究者也非常有帮助。



本书第一章主要是进行一些准备工作,讲解为什么选择Python进行数据分析(理由)、分析的是什么数据(素材)、数据分析中重要的库(工具一)、如何配置开发环境(工具二)。阅读第一章,相信就算是刚刚接触Python的读者也肯定能顺利入门。

Python数分三·第1章

结构化数据

我们在进行数据分析时,用到的最主要的是结构化数据。结构化数据通常是如下数据:

  • 表格型或电子表格型数据,其中各列可能是不同的类型(字符串、数值、日期等)。比如保存在关系型数据库中或以制表符/逗号为分隔符的文本文件中的那些数据。
  • 多维数组(矩阵)。
  • 通过关键列(对于SQL用户而言,就是主键和外键)相互联系的多张表。
  • 平均或不平均间隔的时间序列。

大部分数据集都能被转化为更加适合分析和建模的结构化形式,也可以将数据集的特征提取为某种结构化形式。例如,一组新闻文章可以被处理为一张词频表,而这张词频表就可以用于情感分析。

使用Python进行数据分析的理由

  • Python有非常活跃而强大的社区:Python诞生于1991年,时至今日,Python孕育了一个庞大而活跃的科学计算和数据分析社区,成长为学界和工业界中数据科学、机器学习、软件开发最重要的语言之一。

  • Python非常适合作为胶水语言:Python能够轻松集成C、C++以及Fortran代码,除此之外,将Python与Go、Rust结合也很不错,现在有许多人使用Rust为Python编写插件。

  • Python“赢者通吃”:Python不仅适用于研究和构建原型,同样也适用于构建生产系统。所以,用不着再维护两套开发环境了,可以大大提高企业效率。

Python的劣势

  • Python是解释型编程语言,因此比编译型语言(比如Java和C++)慢得多。

  • Python不适合高并发、多线程,因为存在全局解释器锁(Global Interpreter Lock,GIL)。

Python数据分析中重要的库

NumPy

NumPy,是Numerical Python(数值Python)的简称,它提供了多种数据结构、算法以及大部分涉及Python数值计算所需的接口。NumPy提供了以下功能:

  • 快速、高效的多维数组对象ndarray。
  • 用于对数组执行元素级计算以及直接对数组执行数学运算的函数。
  • 用于读写硬盘上基于数组的数据集的工具。
  • 线性代数运算、傅里叶变换,以及随机数生成。
  • 成熟的C API, 用于Python插件和原生C、C++、Fortran代码存取NumPy的数据结构和计算工具。

NumPy非常适合作为数据容器。对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python数据结构高效得多。此外,由底层语言(比如C和Fortran)编写的库可以直接操作NumPy数组中的数据,无需将数据复制到其他内存中后再操作。因此,许多Python的数值计算工具要么使用NumPy数组作为主要的数据结构,要么可以与NumPy进行无缝交互操作。

pandas

pandas的作者就是本书作者Wes McKinney。

pandas兼具NumPy的高性能数组计算能力以及表格和关系型数据库(例如SQL)的灵活数据操作功能,提供了便捷的索引功能,可以完成重塑、切片、切块、连接和选取数据子集等操作。pandas具有如下功能:

  • 带有标签轴的数据结构,支持自动或清晰的数据对齐。以防止由于数据未对齐,以及处理不同数据源且不同索引的数据,造成的常见错误。
  • 集成时间序列功能。
  • 用于同时处理时间序列数据和非时间序列数据的统一数据结构。
  • 算术运算和规约[ 译者注:规约是计算机科学中降低计算复杂度的方法统称。]可以保存元数据。
  • 灵活处理缺失数据。
  • 合并和其他流行数据库(例如基于SQL的数据库)的关系型操作。

matplotlib

Matplotlib是最流行的用于绘制图表和其他二维数据可视化的Python库。

IPython和Jupyter

IPython是交互性的Python编程终端。IPython可以方便地访问系统的shell和文件系统,在许多场景中就无需在终端窗口和Python会话中来回切换。

Jupyter是一个更多语言交互计算工具,支持40多种编程语言。IPython现在可以作为Jupyter使用Python的内核(一种编程语言模式)。Jupyter notebook还可以编写Markdown和HTML文档。

SciPy

SciPy是专门解决科学计算中多种基本问题的包的集合。以下是其中的一些模块:
scipy.integrate:数值积分例程和微分方程求解器。
scipy.linalg:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。
scipy.optimize:函数优化器(最小化器)以及求根算法。
scipy.signal:信号处理工具。
scipy.sparse:稀疏矩阵和稀疏线性系统求解器。
scipy.special:SPECFUN的封装器,SPECFUN是一个实现了许多常用数学函数(例如gamma函数)的FORTRAN库。
scipy.stats:标准连续和离散概率分布(密度函数、采样器、连续分布函数)、各种统计检验方法,以及各类描述性统计。

scikit-learn

scikit-learn是一个通用的机器学习工具包,它包括以下子模块:

  • 分类:SVM、最近邻、随机森林、逻辑回归等。
  • 回归:Lasso、岭回归等。
  • 聚类:k-means、谱聚类等。
  • 降维:PCA、特征选择、矩阵分解等。
  • 模型选择:网格搜索、交叉验证、指标矩阵。
  • 预处理:特征提取、正态化。

statsmodels

statsmodels是一个统计分析包,起源于斯坦福大学统计学教授Jonathan Taylor,他设计了多种流行于R语言的回归分析模型。Skipper Seabold和Josef Perktold在2010年正式创建了新的statsmodels项目,随后汇聚了大量的使用者和贡献者。受到R语言公式系统的启发,Nathaniel Smith开发了Patsy项目,提供了statsmodels的公式或模型的规范框架。

与scikit-learn相比,statsmodels包含经典统计学(主要是频度)和计量经济学的算法。它包括如下子模块:

  • 回归模型:线性回归,广义线性模型,鲁棒线性模型,线性混合效应模型等。
  • 方差分析(Analysis of variance,ANOVA)。
  • 时间序列分析:AR,ARMA,ARIMA,VAR等模型。
  • 非参数方法: 核密度估计,核回归。
  • 统计模型结果可视化。

statsmodels更关注于统计推断,提供不确定性估计和参数p值参数检验。相反的,scikit-learn更注重预测。

准备开发环境

在Windows上安装Miniconda

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()后按下回车键。

GNU/Linux

还是从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。

在macOS上安装Miniconda

在苹果电脑上安装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-bookpython=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

使用集成开发环境(IDE)

推荐使用PycharmVS Code


第1章 准备环境
第2章 Python语法基础


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,050评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,538评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,673评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,622评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,047评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,974评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,129评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,893评论 0 209
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,654评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,828评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,297评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,619评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,326评论 3 243
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,176评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,975评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,118评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,909评论 2 278

推荐阅读更多精彩内容