第 1 章:导论
本书重点介绍 Python 中数据操作、处理、清洗和整理的实践方面。它将为你提供成为高效数据分析师所必需的 Python 编程技能、库和工具。
Note
虽然本书名为“数据分析”,但它侧重于数据分析所需的 Python 工具,而不是分析技术本身。这就像在建造房屋之前学习如何使用锤子、锯和钻头。🔨🪚🪛
自本书于 2012 年首次出版以来,“数据科学”一词已被广泛使用。它涵盖了广泛的活动,从基本的描述性统计到复杂的统计分析和机器学习。
Note
可以将“数据科学”视为涵盖统计学、机器学习、数据可视化等各种学科的大伞。本书提供了握住那把伞的柄(Python 技能)!
数据分析的很大一部分涉及数据操作,也称为数据整理或数据融合。这些术语都描述了转换和准备数据以进行分析的过程。
Note
想象一下,你有一盒乐高积木散落在地板上。数据整理就像按颜色、大小和形状对这些积木进行分类和组织,然后才能开始构建有意义的东西。🧱
本书主要关注结构化数据,其中包括各种常见的数据形式:
Note
即使是非结构化数据(如新闻文章的集合)通常也可以转换为结构化形式(如词频表)进行分析。可以把它想象成把一堆食材(非结构化数据)变成一个整齐的食谱(结构化数据)。🍲➡️📝
客户ID | 姓名 | 城市 | 订单日期 | 总金额 |
---|---|---|---|---|
1 | Alice | 纽约 | 2023-10-26 | 120.00 |
2 | Bob | 伦敦 | 2023-10-27 | 250.50 |
3 | Charlie | 巴黎 | 2023-10-27 | 75.25 |
4 | Alice | 纽约 | 2023-10-28 | 180.00 |
由于以下几个关键优势,Python 已成为数据分析中非常流行的工具:
Note
Python 就像数据分析的瑞士军刀:用途广泛,具有许多用于不同任务的工具,并且易于使用。🔪🛠️
Python 的一个显著优势是它能够充当“胶水代码”,连接不同的软件组件和系统,尤其是用 C、C++ 和 FORTRAN 等语言编写的遗留代码。
Note
可以将 Python 视为通用适配器,它允许你将不同类型的插头(软件组件)连接到同一个插座(你的数据分析工作流程)中。🔌
传统上,数据分析通常涉及“双语言问题”:
Python 通过同时适用于研究/原型设计和生产来解决此问题:
Note
Python 弥合了研究和生产之间的差距,从而实现了更顺畅、更高效的工作流程。这就像拥有一种团队中的每个人,从数据科学家到软件工程师,都可以理解和使用的单一语言。🌉
虽然 Python 在许多领域都很出色,但在某些情况下它可能不是理想的选择:
Note
Python 中的 GIL 就像一条单车道,即使你有多个车道(核心)可用,也只允许一辆车(线程)一次通过。这对于某些 CPU 密集型任务来说可能是一个瓶颈。但是,你可以使用像 C 扩展这样的绕行方式。🛣️🚗
本节介绍一些对数据分析至关重要的核心 Python 库。
NumPy 是 Python 中数值计算的基础。它提供:
ndarray
: 一种快速高效的多维数组对象,用于存储和操作数值数据。Note
可以将 NumPy 的 ndarray
视为一个高度优化的数字容器,就像一个专为快速计算而设计的高效电子表格。🔢🚀
pandas 建立在 NumPy 之上,提供用于处理结构化或表格数据的高级数据结构和函数。主要功能包括:
DataFrame
: 一种表格化的、面向列的数据结构,具有行和列标签(类似于电子表格或 SQL 表)。Series
: 一维标记数组对象。Note
pandas 就像 Python 中的一个超级电子表格程序,可以让你轻松地操作、清理和分析数据。📊📈
matplotlib 是最广泛使用的 Python 库,用于创建静态绘图和其他二维数据可视化。
Note
matplotlib 是你创建数据可视化表示的首选工具,就像将数据转换为图表和图形一样。📉📊
IPython 和 Jupyter 为 Python 开发和数据分析提供了一个交互式环境。
Note
IPython 和 Jupyter 就像数据科学家的数字实验室笔记本,可以让你进行实验、记录你的工作并分享你的发现。🧪📓
SciPy 是一个软件包的集合,提供用于各种科学计算任务的工具,包括:
scipy.integrate
: 数值积分和微分方程求解器。scipy.linalg
: 线性代数例程。scipy.optimize
: 函数优化和求根算法。scipy.signal
: 信号处理工具。scipy.sparse
: 稀疏矩阵和求解器。scipy.special
: 特殊数学函数。scipy.stats
: 统计分布、检验和描述性统计。Note
SciPy 就像一个装满了用于科学计算的专用仪器的工具箱,扩展了 NumPy 的功能。🧰🔬
scikit-learn 是 Python 的主要通用机器学习工具包。它包括以下子模块:
Note
scikit-learn 是你的机器学习工作室,提供用于构建和评估预测模型的各种工具。🤖🛠️
statsmodels 是一个统计分析包,专注于统计推断,提供不确定性估计和 p 值。它包括:
Note
statsmodels 是你的统计实验室,提供用于进行严格的统计分析和从数据中得出推论的工具。它补充了 scikit-learn,后者更侧重于预测。🧪📊
本节提供使用 Miniconda 和 conda-forge 设置用于数据分析的 Python 环境的说明。
Miniconda 是 conda 的最小安装程序,conda 是一个包、依赖项和环境管理系统。conda-forge 是一个基于 conda 的社区维护的软件发行版。
Note
可以将 conda 视为 Python 项目的虚拟容器。它可以使你的项目保持隔离,并防止不同软件包版本之间的冲突。Miniconda 是 Anaconda 的精简版本。📦
本书提供了在 Windows、macOS 和 Linux 上安装 Miniconda 的详细说明。一般步骤是:
python
。你应该会看到 Python 解释器启动。exit()
或按 Ctrl-D(在 Windows 上按 Ctrl-Z 然后按 Enter)退出解释器。Note
这些步骤就像在开始木工项目之前设置你的工作台。你正在准备好你的工具(Python 及其库)以供使用。🛠️🪚
安装 Miniconda 后,你可以创建一个 conda 环境并安装必要的包:
bash conda config --add channels conda-forge conda config --set channel_priority strict
bash conda create -y -n pydata-book python=3.10
bash conda activate pydata-book
bash conda install -y pandas jupyter matplotlib
(或安装书中列出的所有包)。conda install
与 pip install
: 使用 Miniconda 时首选 conda install
。如果某个包无法通过 conda 获得,请使用 pip install
。conda update package_name
或 pip install --upgrade package_name
。Note
创建 conda 环境就像为每个项目设置一个单独的工作区。它有助于避免可能需要相同包的不同版本的不同项目之间的冲突。🏢
参与 Python 社区是学习和获得帮助的好方法。有用的资源包括:
Note
Python 社区以其热情和乐于助人而闻名。不要犹豫,提出问题并与其他用户联系!🤗
本书涵盖以下关键领域:
我们探讨了使用 Python 进行数据分析的优势,以及一些潜在的局限性。
我们介绍了关键的 Python 库:NumPy、pandas、matplotlib、IPython/Jupyter、SciPy、scikit-learn 和 statsmodels。
我们介绍了使用 Miniconda 安装和设置 Python 环境。
邱飞 💌 [email protected]