
资源介绍
书籍内容架构
本书共分为五个主要部分,涵盖 Python 基础、Pandas 数据分析、spaCy 自然语言处理、应用设计以及结论,各部分内容层层递进,逻辑清晰。
(一)第一部分:Python 基础(第 1-6 章)
这部分是 Python 入门的基础内容,从 Python 的基本介绍入手,解答人文学者为何应学习编程这一关键问题。书中以大型数字历史项目的时间线为例,说明学习编程能让研究者在几天或几周内测试想法,创建最小可行产品(MVP),助力获取项目资金;还阐述了掌握编程可使人文研究者成为自主研究者,减少项目成本、解决沟通问题、缩短想法到执行的滞后时间,同时提及自动化、系统清理数据等学习编程的其他益处。
随后介绍了 Python 的定义、优势,如易读易写、拥有庞大社区和丰富库资源等,以及当前的版本情况。在安装 Python 部分,提供了五种方式,从简单到复杂依次为使用教材数字版中嵌入的 Trinket 应用、Google Colab、教材自带的 Binder 功能、免费在线 Jupyter Notebook,以及通过 Anaconda Navigator 在本地安装并使用 JupyterLab,还详细讲解了每种安装方式的操作步骤,尤其推荐新手通过 Anaconda Navigator 安装,以减少错误。
此外,还涵盖了 Python 编码基础,包括打印函数、对象、变量、大小写敏感性、保留字、内置类型、类型函数以及 bugs(错误)的相关知识,为读者后续深入学习 Python 打下坚实基础。同时,介绍了数据与数据结构,详细讲解了字符串、整数、浮点数、布尔值等数据类型,以及列表、元组、集合、字典等数据结构的定义、创建方法、特性(如可变性与不可变性)和相关操作,如索引、添加元素、替换元素等。
在循环与逻辑章节,阐述了 for 循环和 while 循环的概念、用法,通过实例讲解了循环的构建与应用,还介绍了列表推导式,对比了其与普通循环的异同及适用场景;讲解了比较运算符(如等于、大于、小于等)以及条件语句(if、else、elif),结合实例展示了如何在循环和数据处理中运用这些逻辑判断,帮助读者实现更复杂的数据筛选与处理。
函数、类与库章节介绍了函数的定义、组成部分(函数名、参数、文档字符串、函数体、返回值)、调用方法,包括带多个参数、关键字参数、任意参数的函数;讲解了类的创建、属性与方法的定义及使用,以 “皇帝” 类为例展示了类在数据存储与处理中的应用;还介绍了 Python 库的概念、安装方法(使用 pip 命令)和导入方式,以 Pandas、Requests、BeautifulSoup 等常用库为例进行了演示。
最后,介绍了如何处理外部数据,包括文本数据和 JSON 数据的读取与写入方法,以及如何使用 glob 库和 os 库处理多个文件,如查找特定类型文件、遍历目录等,为读者处理实际研究中的大量数据提供了实用方法。在网页数据处理部分,讲解了 HTML 的基本结构和常用标签、属性,介绍了如何使用 BeautifulSoup 库解析 HTML 数据,以及如何结合 Requests 库调用远程服务器获取网页数据并进行解析,以维基百科 “法国君主列表” 页面为例,演示了网页数据的抓取与处理过程。
(二)第二部分:Pandas 数据分析(第 7-10 章)
这部分聚焦 Pandas 库,首先介绍了 Pandas 的定义,它是用于处理表格数据的强大 Python 库,尤其擅长将.csv 文件等加载为 DataFrame 数据结构,该结构能保留表格数据的结构和层次,便于数据访问与分析,还说明了 Pandas 在数据处理中的优势以及在众多数据分析师资源中的基础地位。
接着讲解了 Pandas 的安装与导入方法,推荐使用 “import pandas as pd” 的导入方式,符合 Python 的使用习惯。在 Pandas 基础部分,介绍了如何从字典创建 DataFrame、显示 DataFrame、将 DataFrame 保存为 CSV 或 JSON 文件以及从这些文件中读取数据,还讲解了如何向 DataFrame 添加列、获取特定列数据、将列数据转换为列表、提取列中的唯一值以及通过索引获取特定行数据,此外,还介绍了如何使用 df.iterrows () 方法遍历 DataFrame。
在 DataFrame 数据查找章节,以泰坦尼克号乘客数据集为例,介绍了如何获取数据集的列名、查看数据集的前几行数据(使用 df.head () 方法)、获取特定范围的行数据(使用 df.iloc [] 方法)、通过 df.describe () 方法获取数据集的定量统计信息,以及如何使用 df.loc [] 方法根据特定条件筛选数据,如查找女性乘客、特定舱位的乘客等,还介绍了使用 “|” 实现 “或” 逻辑的查询方法。
数据组织章节介绍了如何使用 df.sort_values () 方法对 DataFrame 数据进行排序,包括按单个列排序、反向排序、按多个列排序以及按多个列不同方式排序(部分列升序、部分列降序),通过实例展示了排序操作在数据整理中的应用。
数据清理章节讲解了如何删除 DataFrame 中的特定列(使用 df.drop () 方法)、保留特定列、删除包含 NaN 值的行(使用 df.dropna () 方法),可选择删除任意列含 NaN 的行或特定列含 NaN 的行,还介绍了如何转换 DataFrame 中列的数据类型(如从浮点数转换为整数),解决了转换过程中可能出现的问题,如处理 NaN 值等。
高级搜索章节介绍了如何在 DataFrame 中进行高级字符串搜索,如查找包含特定字符串的记录、排除包含特定字符串的记录,以及结合正则表达式进行复杂的字符串匹配;还介绍了 filter () 和 query () 方法,filter () 方法可用于筛选特定列或重新排列列顺序,query () 方法可通过类似 SQL 的语法根据比较运算符(如等于、大于、小于等)查询数据,支持多条件组合查询。
分组分析章节介绍了 groupby () 函数的使用,通过实例展示了如何按特定列对数据进行分组,结合 count ()、sum () 等函数进行定量分析,如按性别分组统计乘客数量、按性别和舱位分组统计票价总和等,还介绍了如何处理分组后的多子集数据,将分组结果转换为 DataFrame 以便进一步分析和可视化。
数据可视化章节介绍了如何使用 Pandas 结合 Matplotlib 绘制条形图、水平条形图、饼图和散点图,详细讲解了图表的自定义方法,如添加标题、设置颜色、调整图表大小、添加标签、显示百分比等,以泰坦尼克号数据集为例,展示了如何通过图表直观呈现数据分布和关系,如不同性别的乘客数量分布、不同舱位乘客的年龄与票价关系等。
网络数据图表绘制章节介绍了如何结合 NetworkX 和 Matplotlib 将 Pandas DataFrame 中的网络数据(如源节点和目标节点数据)转换为网络图表,讲解了网络图表的绘制、添加标签、自定义节点颜色和背景色等操作,为分析人际关系、组织网络等人文研究相关的网络数据提供了方法。
时间序列数据处理章节介绍了时间序列数据的概念和重要性,以南非真相与和解委员会最终报告的数据集为例,讲解了如何处理时间序列数据,包括将浮点数类型的年份转换为整数类型、处理数据中的 NaN 值,以及将整数年份转换为 Pandas 的 datetime 类型,以便进行更高级的时间序列分析,如按年份排序、提取特定年份的数据等,还介绍了如何绘制时间序列数据的图表,直观展示数据随时间的变化趋势。
(三)第三部分:spaCy 自然语言处理(第 11-13 章)
这部分首先介绍了 spaCy 的定义,它是一个自然语言处理框架,属于计算语言学范畴,在学术研究、金融、法律、医疗等多个领域都有广泛应用,还说明了自然语言处理的复杂性以及深度学习在该领域的重要作用。
随后讲解了 spaCy 的安装方法,推荐读者参考 spaCy 官方网站,根据自身设备(如 Mac、Windows、Linux)和所需语言(如英语、法语、德语)获取相应的安装命令,在 JupyterBook 中可通过 “!” 执行终端命令进行安装,还介绍了如何导入 spaCy 以及下载并加载预训练模型(如小型英语模型 en_core_web_sm)。
spaCy 基础部分介绍了 spaCy 的核心容器,包括 Doc、Span 和 Token,讲解了它们之间的关系,Doc 是处理文本的基础对象,包含文本的所有信息;Span 是 Doc 的一部分,可跨多个 Token;Token 是文本的基本单位,如单词、标点符号等,通过图示帮助读者理解这些容器的结构和层次。
在 spaCy 与语言标注章节,介绍了如何创建 Doc 容器,通过将文本传入加载好的 spaCy 模型即可生成 Doc 对象,讲解了 Doc 对象与普通文本字符串的区别,Doc 对象包含丰富的元数据和语言标注信息,如分词结果、句子边界检测(SBD)、词性标注(POS Tagging)、命名实体识别(NER)等。
详细讲解了 Token 的各种属性,如文本(text)、中心词(head)、左右边界(left_edge、right_edge)、实体类型(ent_type_)、实体 IOB 标记(ent_iob_)、词元(lemma_)、形态学信息(morph)、词性(pos_)、句法依存关系(dep_)、语言(lang_)等,通过实例展示了如何获取和解读这些属性信息,帮助读者深入理解文本的语言结构和语义信息。
句子边界检测部分介绍了如何通过 Doc.sents 属性获取文本中的句子,讲解了 spaCy 句子边界检测的优势,能够准确处理包含缩写等复杂情况的句子分割,避免了简单使用字符串分割方法可能出现的错误。
词性标注部分介绍了 spaCy 如何对文本中的每个 Token 进行词性标注,展示了如何通过遍历 Doc 对象获取每个 Token 的文本、词性和句法依存关系,还介绍了使用 spaCy 的 displaCy 功能可视化句子的句法结构,帮助读者直观理解句子的语法结构。
命名实体识别部分介绍了如何通过 Doc.ents 属性获取文本中的命名实体及其类型,如地理政治实体(GPE)、人物(PERSON)、组织(ORG)等,展示了如何遍历 Doc.ents 获取实体信息,还介绍了使用 displaCy 功能可视化命名实体标注结果,使实体及其类型更加直观可见。
spaCy 管道部分介绍了 spaCy 管道的概念,管道由多个组件(pipe)组成,每个组件执