# 环境准备

如果希望快速开始使用 Python 处理数据科学相关的工作,建议大家直接安装 Anaconda,然后使用 Anaconda 中集成的 Notebook 或 JupyterLab 工具来编写代码。因为对于新手来说,先安装官方的 Python 解释器,再逐个安装工作中会使用到的三方库文件会比较麻烦,尤其是在 Windows 环境下,经常会因为构建工具或 DLL 文件的缺失导致安装失败,而一般新手也很难根据错误提示信息采取正确的解决措施,容易产生严重的挫败感。如果计算机上已经有 Python 解释器环境了,也可以直接使用 Python 的包管理工具 pip 安装 Jupyter,再根据实际工作的需要安装三方库,这种方式适合有一定经验的用户。

# 安装和使用 Anaconda

对于个人用户来说,可以从 Anaconda 的官方网站下载它的 “个人版(Individual Edition)” 安装程序,安装完成后,你的计算机上不仅拥有了 Python 环境和 Spyder(类似于 PyCharm 的集成开发工具),还拥有了与数据科学工作相关的近 200 个工具包,包括我们上面提到 Python 数据分析三大神器。除此之外,Anaconda 还提供了一个名为 conda 的包管理工具,通过这个工具不仅可以管理 Python 的工具包,还可以用于创建运行 Python 程序的虚拟环境。

<img src="https://github.com/jackfrued/mypic/raw/master/20211005111417.png">

如上图所示,可以通过 Anaconda 官网提供的下载链接选择适合自己操作系统的安装程序,建议大家选择图形化的安装程序,下载完成后双击安装程序开始安装。安装过程基本使用默认设置即可,完成安装后,macOS 用户可以在 “应用程序” 或 “Launchpad” 中找到名为 “Anaconda-Navigator” 的应用程序,运行该程序可以看到如下所示的界面,我们可以在这里选择需要执行的操作。

<img src="https://github.com/jackfrued/mypic/raw/master/20211005111729.png">

对于 Windows 用户,建议按照安装向导的提示和推荐的选项来安装 Anaconda(除了安装路径,基本也没有什么需要选择的),安装完成后可以在 “开始菜单” 中找到 “Anaconda3”。

温馨提示:可以选择 Miniconda 作为 Anaconda 的替代品,Miniconda 只会安装 Python 解释器环境和一些必要的工具,其他的三方库由用户自行选择安装。其实我个人并不喜欢 Anaconda,因为它是给小白用户使用的,我们有了 Python 以后完全可以按照自己的意愿来安装需要的三方库。

# conda 命令

如果希望使用 conda 工具来管理依赖项或者创建项目的虚拟环境,可以在终端或命令行提示符中使用 conda 命令。Windows 用户可以在 “开始菜单” 中找到 “Anaconda3”,然后点击 “Anaconda Prompt” 来启动支持 conda 的命令行提示符。macOS 用户建议直接使用 “Anaconda-Navigator” 中的 “Environments”,通过可视化的方式对虚拟环境和依赖项进行管理。

  1. 版本和帮助信息。

    • 查看版本: conda -Vconda --version
    • 获取帮助: conda -hconda --help
    • 相关信息: conda list
  2. 虚拟环境相关。

    • 显示所有虚拟环境: conda env list
    • 创建虚拟环境: conda create --name venv
    • 指定 Python 版本创建虚拟环境: conda create --name venv python=3.7
    • 指定 Python 版本创建虚拟环境并安装指定依赖项: conda create --name venv python=3.7 numpy pandas
    • 通过克隆现有虚拟环境的方式创建虚拟环境: conda create --name venv2 --clone venv
    • 分享虚拟环境并重定向到指定的文件中: conda env export > environment.yml
    • 通过分享的虚拟环境文件创建虚拟环境: conda env create -f environment.yml
    • 激活虚拟环境: conda activate venv
    • 退出虚拟环境: conda deactivate
    • 删除虚拟环境: conda remove --name venv --all

    说明:上面的命令中, venvvenv2 是虚拟环境文件夹的名字,可以将其替换为自己喜欢的名字,但是强烈建议使用英文且不要出现空格或其他特殊字符。

  3. 包(三方库或工具)管理。

    • 查看已经安装的包: conda list
    • 搜索指定的包: conda search matplotlib
    • 安装指定的包: conda install matplotlib
    • 更新指定的包: conda update matplotlib
    • 移除指定的包: conda remove matplotlib

    说明:在搜索、安装和更新软件包时,默认会连接到官方网站进行操作,如果觉得速度不给力,可以将默认的官方网站替换为国内的镜像网站,推荐使用清华大学的开源镜像网站。将默认源更换为国内镜像的命令是: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main 。如果需要换回默认源,可以使用命令 conda config --remove-key channels

# 使用 Notebook

# 安装和启动 Notebook

如果已经安装了 Anaconda,macOS 用户可以按照上面所说的方式在 “Anaconda-Navigator” 中直接启动 “Jupyter Notebook”(以下统一简称为 Notebook)。Windows 用户可以在 “开始菜单” 中找到 Anaconda 文件夹,接下来选择运行文件夹中的 “Jupyter Notebook” 就可以开始数据科学的探索之旅。

对于安装了 Python 环境但是没有安装 Anaconda 的用户,可以用 Python 的包管理工具 pip 来安装 jupyter ,然后在终端(Windows 系统为命令行提示符)中运行 jupyter notebook 命令来启动 Notebook,如下所示。

安装 Notebook:

pip install jupyter

安装三大神器:

pip install numpy pandas matplotlib

运行 Notebook:

jupyter notebook

Notebook 是基于网页的用于交互计算的应用程序,可以用于代码开发、文档撰写、代码运行和结果展示。简单的说,你可以在网页中直接编写代码运行代码,代码的运行结果也会直接在代码块下方进行展示。如在编写代码的过程中需要编写说明文档,可在同一个页面中使用 Markdown 格式进行编写,而且可以直接看到渲染后的效果。此外,Notebook 的设计初衷是提供一个能够支持多种编程语言的工作环境,目前它能够支持超过 40 种编程语言,包括 Python、R、Julia、Scala 等。

首先,我们可以创建一个用于书写 Python 代码的 Notebook,如下图所示。

接下来,我们就可以编写代码、撰写文档和运行程序啦,如下图所示。

# Notebook 使用技巧

如果使用 Python 做工程化的项目开发,PyCharm 肯定是最好的选择,它提供了一个集成开发环境应该具有的所有功能,尤其是智能提示、代码补全、自动纠错这类功能会让开发人员感到非常舒服。如果使用 Python 做数据科学相关的工作,Notebook 并不比 PyCharm 逊色,在数据和图表展示方面 Notebook 更加优秀。这个工具的使用非常简单,大家可以看看 Notebook 菜单栏,相信理解起来不会有太多困难,在知乎上有一篇名为《最详尽使用指南:超快上手 Jupyter Notebook》的文章,也可以帮助大家快速认识 Notebook。

说明Jupyter 官网上还有一个名为 JupyterLab 的工具,被称之为 “Next-Generation Notebook”,用户界面较之 Notebook 更加友好,有兴趣的读者可以使用 pip install jupyterlab 命令来安装这个工具,然后通过 jupyter lab 来启动它。

下面我为大家介绍一些 Notebook 的使用技巧,希望能够帮助大家提升工作效率。

  1. 自动补全。在使用 Notebook 编写代码时,按 Tab 键会获得代码提示。

  2. 获得帮助。在使用 Notebook 时,如果希望了解一个对象(如变量、类、函数等)的相关信息或使用方式,可以在对象后面使用 ? 并运行代码, 窗口下方会显示出对应的信息,帮助我们了解该对象,如下所示。

  3. 搜索命名。如果只记得一个类或一个函数名字的一部分,可以使用通配符 * 并配合 ? 进行搜索,如下所示。

  4. 调用命令。可以在 Notebook 中使用 ! 后面跟系统命令的方式来执行系统命令。

  5. 魔法指令。Notebook 中有很多非常有趣且有用的魔法指令,例如可以使用 %timeit 测试语句的执行时间,可以使用 %pwd 查看当前工作目录等。如果想查看所有的魔法指令,可以使用 %lsmagic ,如果了解魔法指令的用法,可以使用 %magic 来查看,如下图所示。

    常用的魔法指令有:

    | 魔法指令 | 功能说明 |
    | ------------------------------------------- | ------------------------------------------ |
    | %pwd | 查看当前工作目录 |
    | %ls | 列出当前或指定文件夹下的内容 |
    | %cat | 查看指定文件的内容 |
    | %hist | 查看输入历史 |
    | %matplotlib inline | 设置在页面中嵌入 matplotlib 输出的统计图表 |
    | %config Inlinebackend.figure_format='svg' | 设置统计图表使用 SVG 格式(矢量图) |
    | %run | 运行指定的程序 |
    | %load | 加载指定的文件到单元格中 |
    | %quickref | 显示 IPython 的快速参考 |
    | %timeit | 多次运行代码并统计代码执行时间 |
    | %prun | 用 cProfile.run 运行代码并显示分析器的输出 |
    | %who / %whos | 显示命名空间中的变量 |
    | %xdel | 删除一个对象并清理所有对它的引用 |

  6. 快捷键。Notebook 中的很多操作可以通过快捷键来实现,使用快捷键可以提升工作效率。Notebook 的快捷键又可以分为命令模式下的快捷键和编辑模式下的快捷键,所谓编辑模式就是处于输入代码或撰写文档状态的模式,在编辑模式下按 Esc 可以回到命令模式,在命令模式下按 Enter 可以进入编辑模式。

    命令模式下的快捷键:

    | 快捷键 | 功能说明 |
    | ---------------------------------------- | -------------------------------------------- |
    | Alt + EnterOption + Enter ) | 运行当前单元格并在下面插入新的单元格 |
    | Shift + Enter | 运行当前单元格并选中下方的单元格 |
    | Ctrl + EnterCommand + Enter ) | 运行当前单元格 |
    | j / kShift + j / Shift + k | 选中下方 / 上方单元格、连续选中下方 / 上方单元格 |
    | a / b | 在下方 / 上方插入新的单元格 |
    | c / x | 复制单元格 / 剪切单元格 |
    | v / Shift + v | 在下方 / 上方粘贴单元格 |
    | dd / z | 删除单元格 / 恢复删除的单元格 |
    | l / Shift + l | 显示或隐藏当前 / 所有单元格行号 |
    | ii / 00 | 中断 / 重启 Notebook 内核 |
    | Space / Shift + Space | 向下 / 向上滚动页面 |

    编辑模式下的快捷键:

    | 快捷键 | 功能说明 |
    | ------------------------------------------------------------ | -------------------------------------- |
    | Shift + Tab | 获得提示信息 |
    | Ctrl + ]Command + ] )/ Ctrl + [Command + [ ) | 增加 / 减少缩进 |
    | Alt + EnterOption + Enter ) | 运行当前单元格并在下面插入新的单元格 |
    | Shift + Enter | 运行当前单元格并选中下方的单元格 |
    | Ctrl + EnterCommand + Enter ) | 运行当前单元格 |
    | Ctrl + Left / RightCommand + Left / Right ) | 光标移到行首 / 行尾 |
    | Ctrl + Up / DownCommand + Up / Down ) | 光标移动代码开头 / 结尾处 |
    | Up / Down | 光标上移 / 下移一行或移到上 / 下一个单元格 |

    温馨提示:如果记不住这些快捷键也没有关系,在命令模式下按 h 键可以打开 Notebook 的帮助系统,马上就可以看到快捷键的设置,而且可以根据实际的需要重新编辑快捷键,如下图所示。