4.1 可视化包介绍、安装与加载
数据可视化是数据分析中最重要的工作之一,透过图像化可以帮助使用者更容易找到一些数据的特性,Python 有许多库可以进行静态或动态的数据可视化,而本章将关注于 matplotlib 库, pandas相关内置视觉化的函数以及 Seaborn 库。
介绍一下在 Python 的绘图基本原理,绘图需要明确三个基本概念:
- 画布 (Figure):透过画布来承载图像,一个画布可以切割成多个子图表 (subplot)。
- 坐标系 (Axes):通过坐标系可以标定画图的区域;
- 坐标轴 (Axis):常见的二维坐标系需要透过 X 轴、 Y 轴来标示出所在位置;然而不是所有图像都需要坐标轴,如饼图。
matplotlib 是一个用于创建出版质量图表的桌面绘图包。该项目是由 John Hunter 于2002年启动的,其目的是为 Python 构建一个 MATLAB 式的绘图接口。matplotlib 和 IPython 社区进行合作,简化了从 IPython shell 进行交互式绘图。matplotlib 支持各种操作系统上许多不同的 GUI 后端,而且还能将图片导出为各种常见的向量 (vector) 和光栅 (raster) 图,常见的有PDF, SVG, JPG, PNG, BMP, GIF等。
IPython 是 Python 解释器的进阶版本,全名为 Interactive Python,它与 Python 解释器是同时安装的,并不需要额外安装。在 Visual Studio Code 中,上方功能菜单中,请选择 View > Terminal 打开终端机画面,在终端机画面中输入 ipython ,就可以进入IPython 的交互模式。在 IPython 中可以用 Tab 键来补全输入,如下图所示
图 4-1-1 IPython 操作画面
IPython 还提供了自省功能,可以显示 1. 对象的信息、 2. 方法的语法。
图 4-1-2 IPython 自省功能
IPython 中特殊的命令被称作“魔术” (magic) 命令。这些命令可以使普通任务更便捷,更容易控制 IPython 系统。魔术命令是在指令前添加百分号 % 前缀。例如,可以用 %timeit 测量任何 Python 语句的执行时间,产生一个 100 * 100 的阵列,进行两个矩阵相乘的运算,总共需要进行 10000 次廻圈运算,每次时间约 0.124 秒,会有加减 0.00102 秒的误差:
import numpy as np
a = np.random.randn(100, 100)
print(a.shape)
%timeit np.dot(a, a)
输出结果如下:
Out[9]: (100, 100)
124 µs ± 1.02 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
下表列出常见的 IPython 命令:
命令 | 描述 |
---|---|
%quickref | IPython 命令的快速参考 |
!dir | 运行外部指令 |
%magic | 显示所有魔术命令的详细文档 |
%debug | 出现异常的语句进入调节模式 |
%hist | 显示输入命令的历史 |
%reset | 书橱所有命名空间的变量 |
%run script.py | 运行代码 |
%timeit statement | 报告语句执行时间 |
%matplotlib | 允许激活 matplotlib 的交互式支持 |
Seaborn 是基于 matplotlib 基础所衍生出来的的图形可视化 Python 包,在 matplotlib 的基础上进行了更高级的 API 封装,从而使得作图更加容易;提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。Seaborn 可视为 matplotlib 的补充,而非替代物,同时它能高度兼容 numpy 与 pandas 数据结构。
安装与加载
在 Visual Studio Code 中启动 Jyputer Notebook,在 Visual Studio Code 画面中按下 Ctrl+Shift+P 打开命令面板 (Command Palette) ,接着键入 Jupyter: Create New Jupyter NoteBook 在命令进行搜索,然后选择该命令,Visual Studio Code 会开启一个空白的 Jupyter Notebook 画面,并自动启动服务器与连接 指定的 Kernel,预设是 ipykernel ,接着在 Cell 中输入以下指令就可以安装并汇入图形可视化包 matplotlib seaborn 并检查版本,值得注意的是 ! 这个字符是告诉 Jupyter Notebook要执行 console 的指令,而非 Python 的指令。结果如下图所示:
# ! 这个字符是告诉 Jupyter Notebook要执行 console 的指令,而非 Python 的指令
!pip install --user matplotlib seaborn
# 汇入图形可视化包 matplotlib seaborn
import seaborn as sns
import matplotlib as mpl
# 检查版本
print(sns.__version__)
print(mpl.__version__)
图 4-1-3 安装可视化包
随着时间的发展,matplotlib衍生出了多个数据可视化的工具集,它们使用matplotlib作为底层。其中之一是seaborn(http://seaborn.pydata.org/),本章后面会学习它。
学习本章代码案例的最简单方法是在Jupyter notebook进行交互式绘图。在Jupyter notebook中执行下面的语句。