Python数据可视化编程实战(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-05 07:24:34

点击下载

作者:[爱尔兰] Igor Milovanovic

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python数据可视化编程实战

Python数据可视化编程实战试读:

前言

最好的数据是我们能看到并理解的数据。作为一个开发人员,我们想创造并构建出最全面且容易理解的可视化图形。然而这并非总是很简单,我们需要找出数据,读取它、清理它、揣摩它,然后使用恰当的工具将其可视化。本书通过简单(和不那么简单)直接的方法解释了如何读取、清理和可视化数据的流程。

本书对怎样读取本地数据、远程数据、CSV、JSON以及关系型数据库中的数据,都进行了讲解。

通过matplotlib,我们能用一行简单的Python代码绘制出一些简单的图表,但是进行更高级的绘图还需要除 Python 之外的其他知识。我们需要理解信息理论和人类的审美学来生成最吸引人的可视化效果。

本书讲解在Python中使用matplotlib绘图的一些练习、使用情况,以及对于不同图表特性应该使用的方法的一些最佳实践。

本书的写作及代码开发均基于 Ubuntu 12.03,使用了 Python 2.7、IPython 0.13.2、virtualenv 1.9.1、matplotlib 1.2.1、NumPy 1.7.1 和 SciPy 0.11.0。

本书涵盖内容

第1章,准备工作环境,包括一些安装方法,以及如何在你的平台上安装所需的Python包和库的一些建议。

第2章,了解数据,介绍通用的数据格式,以及如何读写,如CSV、JSON、XSL或者关系型数据库。

第3章,绘制图表及定制化,着手绘制简单的图表并介绍图表的定制化。

第4章,学习更多图表和定制化,继续上一章内容,介绍更多的高级表格和网格定制化。

第5章,3D可视化,介绍三维数据的可视化,如3D柱状图、3D直方图,以及matplotlib动画。

第6章,用图像和地图绘制图表,涵盖图像处理、在地图上投射数据,以及创建CAPTCHA测试图像。

第7章,使用正确的图表理解数据,涵盖一些更高级绘图技术的讲解和方法,如频谱图和相关性。

第8章,更多的matplotlib知识,介绍一些图表如甘特图、箱线图,并且介绍如何在matplotlib中使用LaTeX渲染文本。

准备工作

学习本书时,需要你在自己的操作系统上安装 Python2.7.3 或最新版本。本书使用Ubuntu12.03系统上的默认Python版本(2.7.3)。

本书中用到的另一个软件包是 IPython,它是一个交互式的 Python 环境,功能非常强大、灵活。可以通过基于 Linux 平台的包管理工具或者用于 Windows 和 Mac OS 系统的预安装文件安装。

一般来说,如果你对于Python安装和相关软件安装不熟悉,强烈推荐你使用预打包的Python 科学发行包如 Anaconda、Enthought Python 发行包或者 Python(X,Y)进行安装。

其他所需的软件主要包括Python包,可全部通过Python安装管理器pip进行安装。pip本身通过Python的easy_install安装工具安装。

谁适合阅读本书

本书是为那些通常已经了解Python编程的开发人员编写的。如果你听说过数据可视化但又不知道从何入手,本书会从头开始指导你了解数据、数据格式、数据可视化,以及如何使用Python可视化数据。

你需要知道一些一般的编程概念,如果你有编程经验,会非常有用。然而,本书中的代码几乎是逐行讲解的。阅读本书不需要任何数学知识,书中介绍的每一个概念都有详细的讲解,并且提供了一些参考资料以供进一步的兴趣阅读。

约定

在本书中,不同的信息由一些不同风格的文字来区分。这里有一些文字风格的例子,以及它们的含义解释。

书中的代码文字显示如下:“我们把小演示程序封装在DemoPIL类中,这样可以共享示例函数run_fixed_filters_demo的代码,并能很容易地对其进行扩展。”

代码块设置如下:

def _load_image(self, imfile):

self.im = mplimage.imread(imfile)

当我们想要让你关注代码块中的某一特定部分时,相关的行或元素将设置为粗体:

# tidy up tick labels size

all_axes = plt.gcf().axes

for ax in all_axes:

for ticklabel in ax.get_xticklabels() + ax.get_yticklabels():

ticklabel.set_fontsize(10)

所有的命令行输入或者输出的写法如下。

$ sudo python setup.py install

新术语和关键词将显示为粗体。例如,在屏幕上、菜单或对话框中的文字将会显示为:“然后我们为火柴杆图设置一个标签和基线位置,默认值为0。”

警告或者重要的说明出现在这样的一个文本框中。

提示和技巧像这样显示。

读者反馈

欢迎读者向我们反馈意见。请让我们知道你对本书的看法——哪些是你喜欢或者不喜欢的。读者反馈对我们非常重要,可以帮我们完善一些你非常关心的内容。

如果给我们发送一般的反馈,可以简单地发电子邮件到feedback@packtpub.com,并请在消息标题中提及书名。

如果你对某个话题有经验,并且有兴趣写作或者想为一本书做贡献,请参考我们的作者指南www.packtpub.com/authors。

支持

既然你已经是Packt书籍的读者,我们有许多辅助材料可以帮助你从本书中得到最大的收获。

下载示例代码

可以在 http://www.packtpub.com 网站上你的账户中下载你所购买的所有图书的示例代码文件。如果你在其他地方购买本书,可以访问http://www.packtpub.com/support页面进行登记,文件会通过邮件直接发送给你。

勘误

尽管我们已经竭尽全力确保本书内容的准确,但是错误在所难免。如果你在书中发现了错误——可能是文本或者代码中的错误——如果你能把它报告给我们,我们将万分感谢。如此,这样可以减轻其他读者的痛苦,并且可以帮我们改进该书的后续版本。如果你找到任何错误,请访问http://www.packtpub.com/submit-errata并报告给我们,选择你的图书,点击 errata submission form 链接,并加入你勘误的详细内容。一旦你的勘误通过验证,你的提交将被接受,勘误将会上传到我们的网站,或者添加到位于该标题的勘误部分的已有勘误列表中。可以在http://www.packtpub.com/support上选择你的标题来查看所有现有的勘误信息。

著作权侵害

互联网上的版权侵害是一个跨越所有媒介的持续的问题。在Packt,我们很认真地看待版权和许可保护。如果你不经意在互联网上得到了关于我们作品的任何形式的不合法的副本,请及时给我们提供其地址或者网站名称,以便我们及时补救。

请通过copyright@packtpub.com联系我们,同时请提供涉嫌侵权材料的链接。

非常感激你帮助保护我们的作者,让我们尽力提供更有价值的内容。

问题

如果你对本书有任何疑问,可以通过 questions@packtpub.com 联系我们,我们会竭尽全力提供帮助。第1章准备工作环境

本章包含以下内容。

◆ 安装matplotlib、NumPy和SciPy库

◆ 安装virtualenv和virtualenvwrapper

◆ 在Mac OSX上安装matplotlib

◆ 在 Windows 上安装 matplotlib

◆ 安装Python图像处理库(Python Imaging Library,PIL)

◆ 安装requests模块

◆ 通过代码设置matplotlib的参数

◆ 为项目设置matplotlib的参数1.1 介绍

本章向读者介绍必备的工具类库,以及如何进行安装与配置。作为本书后续部分的基础知识,掌握这部分内容十分必要。如果你没有使用Python进行数据处理、图像处理以及数据可视化的经验,建议不要跳过本章。如略过本章,在需要安装配套工具软件或需要确定工程所支持的软件版本时,可返回本章阅读相关内容。1.2 安装matplotlib、Numpy和Scipy库

本章介绍了matplotlib及其依赖的软件在Linux平台上的几种安装方法。1.2.1 准备工作

这里假设你已经安装了Linux 系统且安装好了Python (推荐使用Debian/Ubuntu 或RedHat/SciLinux)。在前面提到的Linux系统发行版中,Python通常是默认安装的。如果没有,使用标准的软件安装方式安装Python也是非常简便的。本书假设你安装的Python版本为2.7或以上。

几乎所有的代码均可在 Python 3.3 及以上版本的环境下工作,但是因为大部分操作系统提供的Python版本仍然是2.7(甚至是2.6),本书代码基于Python 2.7 版本。这种基于 Python 版本的区别并不大,主要是在软件包版本和部分代码上存在差别(在Python3.3以上版本,请使用range方法替换xrang方法)。

本书也假设你知道如何使用操作系统软件包管理工具进行软件包的安装,以及知道如何使用命令行终端。

构建matplotlib运行环境,需要满足相关软件依赖。

Matplotlib的构建过程依赖NumPy、libpng和freetype软件包。要从源代码构建matplotlib,必须先要安装好NumPy库。读者可以访问http://www.numpy.org/了解安装NumPy库的方法(请安装1.4或以上版本,Python 3需要NumPy 1.5或以上版本)。

NumPy库提供处理大数据集的数据结构和数学方法。诸如元组、列表或字典等Python的默认数据结构同样可以很好地支持数据的插入、删除和连接。NumPy的数据结构支持“矢量”操作,使用简便,同时具有很高的执行效率。矢量操作在实现时充分考虑了大数据的需要,基于C语言的实现方式也保证了执行效率。

基于NumPy构建的SciPy库,是Python的标准科学计算和数学计算工具包,包含了大量的专用函数和算法。而大部分函数和算法源自著名的Netlib软件仓库(参见http://www.netlib.org),实际上是使用C语言和Fortran语言实现的。

安装NumPy库的步骤如下。

1.安装Python-NumPy软件包。

$ sudo apt-get install python-numpy

2.检查软件包版本。

$ python -c 'import numpy; print numpy.__version__'

3.安装所需的库。

◆ libpng 1.2:PNG 文件处理(依赖 zlib 库)。

◆ freetype 1.4+:处理 True type 字体。

$ sudo apt-get install build-dep python-matplotlib

如果使用RedHat或基于RedHat的Linux发行版(Fedora、SciLinux或CentOS),可以使用yum工具进行安装,方法与apt-get工具类似。

$ su -c 'yum-builddep python-matplotlib'1.2.2 操作步骤

安装matplotlib及其依赖软件的方法有很多:从源代码安装,使用预编译完成的二进制文件安装,通过操作系统软件包管理工具安装,或安装内置了matplotlib的python预打包发布版本。

使用包管理工具大概是最简单的安装方式。例如在Ubuntu系统中,在命令行终端中输入下面的命令即可。

# in your terminal, type:

$ sudo apt-get install python-numpy python-matplotlib python-scipy

如果读者期望使用最新特性,最好的选择是通过源代码进行安装。安装方式包含以下步骤:获取源代码、构建依赖库和参数配置、编译以及安装。

可以从代码托管站点www.github.com下载最新代码进行安装,操作步骤如下。

$ cd ~/Downloads/

$ wget https://github.com/downloads/matplotlib/matplotlib/matplotlib-1.2. 0.tar.gz

$ tar xzf matplotlib-1.2.0.tar.gz

$ cd matplotlib-1.2.0

$ python setup.py build

$ sudo python setup.py install

4 Python 数据可视化编程实战

下载示例代码

对于使用网站账户在 http://www.packtpub.com 上购买的所有 Packt 书籍,读者均可在网站上下载有关的代码示例。如果读者是从别处购得图书,可以访问网址(http://www.packtpub.com/support/),完成注册后,代码文件会发送到读者邮箱。1.2.3 工作原理

从源代码安装 matplotlib, 使用了标准的 Python 发布工具 Distutils。安装过程需要提前安装依赖的软件包。关于使用标准的 Linux 包管理工具安装依赖软件的方法,可参考本节中关于准备工作的说明。1.2.4 补充说明

根据数据可视化项目的需要,可能有必要安装额外的可选软件包。

无论你工作在什么项目上,IPython都是值得推荐的。IPython是一款交互式Python命令行工具。其提供的PyLab模式,已经导入了matplotlib库与相关软件包(例如NumPy和SciPy),可以直接使用相关库的功能。IPython 工具的安装与使用方法十分简单明了,读者可通过 IPython 的官方网站查看相关细节。1.3 安装virtualenv和virtualenvwrapper

如果同时工作在多个项目上,或是需要在不同项目间频繁切换,将所有的软件都安装在操作系统层级上也许不是一个好主意。当需要在不同系统(产品环境)上运行软件时,这种方式会带来问题。如果到此时才发现缺少特定的软件包,或是产品环境已经安装的软件包存在版本冲突,这将是非常痛苦的。为避免这种情况发生,可以选择使用virtualenv。

virtualenv 是由 Ian Bicking 创建的开放源代码项目。通过这个项目, 开发人员可以把不同项目的工作环境隔离开,从而能够更容易地维护多种不同的软件包版本。

举例来说,Django 网站系统是基于 Django 1.1 和 Python 2.3 版本开发的,但与此同时,一个新项目要求必须基于Python2.6来开发。在笔者工作过的项目中,根据项目的需要同时使用多个版本的Python(以及相关软件包)的情况非常普遍。

virtualenv能够让我们很容易地在不同的运行环境之间切换。同时,如果需要切换到另外的机器或者需要在产品服务器(或客户的工作站主机)上部署软件, 用 virtualenv 能够很容易地重新构建相同的软件包环境。1.3.1 准备工作

若安装virtualenv,需要用到Python和pip。Pip是安装并管理Python软件包的工具,可以用它来代替 easy install 工具。本书中大部分的软件包都是用 pip 工具进行管理的。只需在终端中以root身份执行如下命令,就可以很容易地完成pip的安装。

# easy_install pip

virtualenv 本身已经相当不错了,然而如果配合 virtualenvwrapper,一切变得更加简单,并且组织多个虚拟环境的工作也会更加容易。virtualenvwrapper 的功能请参考 http://virtualenvwrapper. readthedocs.org/en/latest/#features。1.3.2 操作步骤

安装virtualenv和virtualenvwrapper工具的步骤如下。

1.安装virtualenv和virtualenvwrapper。

$ sudo pip virtualenv

$ sudo pip virtualenvwrapper

# 创建保存虚拟环境的目录,并使用 export 导出为环境变量。

$ export VIRTENV=~/.virtualenvs

$ mkdir -p $VIRTENV

# 使用 source 命令调用(执行)shell 脚本来激活包装器

$ source /usr/local/bin/virtualenvwrapper.sh

# 创建一个虚拟环境

$ mkvirtualenv virt1

2.在virt1环境中安装matplotlib。

(virt1)user1:~$ pip install matplotlib

3.很有可能需要把以下代码添加到~/.bashrc中。

source /usr/loca/bin/virtualenvwrapper.sh

下面是一些有用和频繁使用的命令。

◆ mkvirtualenv ENV: 创建名为 ENV 的虚拟环境并激活。

◆ workon ENV: 激活先前创建的 ENV 虚拟环境。

◆ deactivate: 退出当前虚拟环境。1.4 在Mac OS X上安装matplotlib

在 Mac OS X 上获取 matplotlib 最简便的方式是使用预打包的 python 发布版本,例如Enthought Python Distribution (EPD)。读者可以直接访问 EPD 网站,下载安装操作系统对应的最新稳定版。

倘若EPD软件不满足要求,或者因为其他一些原因(如版本问题)而无法使用,也可以用手动(麻烦点)的方式安装Python、matplotlib和依赖软件。1.4.1 准备工作

对于Apple在操作系统中没有安装的软件来说,Homebrew项目可以使安装过程更容易。实际上,Homebrew是基于Ruby和Git的,可以被自动下载和安装。软件安装顺序为:首先安装 Homebrew,之后安装 Python,随后安装诸如 virtualenv 的工具软件,接下来安装matplotlib的依赖(NumPy和SciPy),最后安装matplotlib。接下来就开始吧。1.4.2 操作步骤

1.在终端中输入并执行下面的命令。

ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)

命令执行完成后,可以尝试用 brew update 或 brew doctor 命令来检查 brew 是否能够正常工作。

2.然后,将Homebrew目录添加到系统path环境变量中。这样,使用Homebrew安装的软件包能够获得比其他版本更高的优先级。打开~/.bash_profile文件(或者/Users/[your-user-name]/.bash_profile)并在文件末尾添加以下代码。

export PATH=/usr/local/bin:$PATH

3.重新启动命令行终端使其加载新的 path 环境变量。之后,下面一行简单的代码就可以完成Python的安装。

brew install python --framework –universal

本命令同时也将安装Python所需的其他软件。

4.更新path环境变量(添加到同一行)。

export PATH=/usr/local/share/python:/usr/local/bin:$PATH

5.在命令行输入 python –version,检查 python 是否安装成功。

正常的话,会能够看到Python版本信息为2.7.3。

6.pip应该也已经安装完毕。如果还没有,可使用easy_install安装pip。

$ easy_install pip

7.这时,任何所需软件包的安装过程就变得非常简单了。例如,安装 virtualenv 和virtualenvwrapper。

pip install virtualenv

pip install virtualenvwrapper

8.是时候向一直以来的目标迈进了——安装matplotlib。

pip install numpy

brew install gfortran

pip install scipy

Mountain Lion 的用户需要安装 SciPy 的开发版(0.11),命令如下。

pip install -e git+https://github.com/scipy/scipy#egg=scipy- dev

9.检查安装是否成功。启动Python并执行以下命令。

import numpy

print numpy.__version__

import scipy

print scipy.__version__

quit()

10.安装matplotlib。

pip install matplotlib1.5 在Windows上安装matplotlib

在本节中,我们将演示如何安装Python和matplotlib。假设系统中没有预先安装Python。1.5.1 准备工作

在Windows上安装matplotlib有两种方式。较简单的方式是安装预打包的Python环境,如EPD、Anaconda和Python(x,y)。这是本书推荐的安装方式,尤其对于初学者来说更是如此。

第二种方式,是使用预编译的二进制文件来安装matplotlib和依赖软件包。需要注意安装的NumPy和SciPy的版本,因为并非所有的版本都与最新版matplotlib二进制文件相互兼容,这势必会给整个安装过程带来一些困难。这种安装方法也有自身的优势。如果想要获取最新功能,即使功能还未正式发布,仍然能够通过编译matplotlib或某软件库的某个特定版本来使用它。1.5.2 操作步骤

要安装免费或商业Python科学发布版,按照项目网站上提供的步骤可以很容易安装成功,这也是推荐使用的方式。

如果单纯使用matplotlib,不期望面对Python和依赖软件包版本所带来的困扰,可以考虑使用 Enthought Python Distribution(EPD)发布版。使用 matplotlib 所需的预打包库和所有必须的依赖软件(SciPy、NumPy、IPython以及更多的其他软件包),均已包含在EPD发布版中。

matplotlib 以及与本书内容相关的软件,都可以使用常规的 Windows Installer 安装文件(*.exe)方式进行安装。

Python(x,y)(http://code.google.com/p/pythonxy/)是针对 Windows 32 位系统的免费科学计算项目,其中包含了 matplotlib 需要使用的依赖文件,它是在 Windows 系统上安装matplotlib 的一种非常简单(而且是免费的)的方式。因为 Python(x,y)和 Python 模块安装器相互兼容,可以很容易地在Python(x,y)基础上扩展安装其他Python库。在安装Python(x,y)之前,系统应该没有安装Python。

下面简短地说明一下如何使用预编译的Python、NumPy、SciPy和matplotlib二进制文件进行matplotlib的安装。首先,下载官方的MSI安装文件安装对应平台(x86或x86-64)的标准Python程序。之后,下载NumPy和SciPy的官方二进制文件并安装它们。在正确安装NumPy和SciPy之后,就可以下载最新稳定版matplotlib二进制安装文件并按照官方说明进行安装了。1.5.3 补充说明

请注意,在Windows安装文件中matplotlib的示例相当有限。如果想尝试使用示例程序,可以下载并参考matplotlib源文件包中的examples子目录。1.6 安装图像处理工具:Python图像库(PIL)

Python图像库(PIL)为Python提供了图像处理能力。PIL支持的文件格式相当广泛,在图像处理领域提供了相当强大的功能。

快速数据访问、点运算(point operations)、滤波(filtering)、图像缩放、旋转、任意仿射转换(arbitrary affine transforms)是 PIL 中一些应用非常广泛的特性。例如,图像的统计数据即可通过histogram方法获得。

PIL 同样可以应用在其他方面,如批量处理、图像压缩、生成缩略图、图像格式转换以及图像打印。

PIL 可以读取多种图像格式,而图像写入支持的格式范围限定在图像交换和展示方面最通用的格式(有意为之)。1.6.1 操作步骤

最容易也是最值得推荐的方式,是通过操作系统平台的包管理工具进行安装。

在Debian/Ubuntu系统中安装的命令如下。

$ sudo apt-get build-dep python-imaging

$ sudo pip install http://effbot.org/downloads/Imaging-1.1.7.tar.gz1.6.2 安装过程说明

我们通过apt-get系统工具安装PIL所需的所有依赖软件,并通过pip安装PIL的最新稳定版本。一些老版本的Ubuntu系统通常不会提供PIL的最新发布版本。

在RedHat/SciLinux系统中,安装命令如下。

# yum install python-imaging

# yum install freetype-devel

# pip install PIL1.6.3 补充说明

有一个专门针对 PIL 编写的在线手册。读者可以访问 http://www.pythonware. com/library/pil/handbook/index.htm 进行阅读,或是下载 PDF 版本:http://www.pythonware. com/media/data/pil-handbook.pdf。

Pillow 是一个 PIL 分支,它的主要目的是解决安装过程中的一些问题。Pillow 很容易安装,其网址为http://pypi.python.org/pypi/Pillow。

在Windows平台上,也可使用二进制安装文件安装PIL。从http://www.pythonware. com/products/pil/下载.exe安装文件,执行该文件将安装 PIL 到 Python 的 site-packages目录。

如果需要在虚拟环境下使用 PIL,可手动将 PIL.pth 文件和位于 C:\Python27\Lib\site-packages下的PIL目录复制到virtualenv的site-packages目录下。1.7 安装requests模块

我们需要的大部分数据都可以通过HTTP或类似协议获得,因此我们需要一些工具来实现数据访问。Python的requests库能让这部分工作变得轻松起来。

虽然Python提供的urllib2模块提供了访问远程资源的能力以及对HTTP协议的支持,但使用该模块完成基础任务的工作量还是很大的。

Request模块提供新的API,减轻了使用Web服务的痛苦,使其变得更直接。Requests封装了很多 HTTP 1.1 的内容,仅在需要实现非默认行为的情况下才需要暴露相关内容。1.7.1 操作步骤

安装requests模块最好的方式是使用pip。安装命令如下。

$ pip install requests

也可以在virtualenv虚拟环境中执行安装命令,如果并不是所有项目都需要requests,或是不同的项目需要使用不同版本的requests。

为了更快地理解requests的功能,下面是一个使用requests的小例子。

import requests

r = requests.get('http://github.com/timeline.json')

print r.content1.7.2 requests 使用说明

在本例中,我们向 www.github.com 站点的 URI 发送 HTTP GET 请求,以 JSON格式返回了 GitHub 网站的活动时间表(也可以通过访问 https://github.com/timeline 得到HTML版本的活动时间表)。在成功读取HTTP响应后,对象r包含了HTTP响应内容以及其他属性信息(HTTP状态码、cookies、HTTP头元数据,甚至包括当前响应所对应的请求信息)。1.8 在代码中配置matplotlib参数

matplotlib库提供了强大的绘图功能,是本书用的最多的Python库。在其配置文件即.rc文件中,已经为大部分属性设定了默认值。本节会介绍如何通过应用程序代码修改matplotlib的相关属性值。1.8.1 准备工作

如前所述,matplotlib配置信息是从配置文件读取的。在配置文件中可以为matplotlib的几乎所有的属性指定永久有效的默认值。1.8.2 操作步骤

在代码执行过程中,有两种方式更改运行参数:使用参数字典(rcParams)或调用matplotlib.rc()命令。第一种方式中,可以通过rcParams字典访问并修改所有已经加载的配置项;第二种方式中,可以通过向 matlotlib.rc()传入属性的关键字元组来修改配置项。

如果需要重置动态修改后的配置参数,可以调用matplotlib.rcdefaults()将配置重置为标准设置。

下面两段代码演示了之前介绍的功能。

使用matplotlib.rcParams的例子。

import matplotlib as mp

mpl.rcParams['lines.linewidth'] = 2

mpl.rcParams['lines.color'] = 'r'

使用matplotlib.rc()函数调用的例子。

import matplotlib as mpl

mpl.rc('lines', linewidth=2, color='r')

上面两个例子具有相同的语义。第二个例子中,我们设定后续的所有图形使用的线条宽度为2个点。第一个例子中的最后一条语句表明,语句之后的所有线条的颜色均为红色,除非用本地设置覆盖它,请看下面的例子。

import matplotlib.pyplot as plt

import numpy as np

t = np.arange(0.0, 1.0, 0.01)

s = np.sin(2 * np.pi * t)

# make line red

plt.rcParams['lines.color'] = 'r'

plt.plot(t,s)

c = np.cos(2 * np.pi * t)

# make line thick

plt.rcParams['lines.linewidth'] = '3'

plt.plot(t,c)

plt.show()1.8.3 代码解析

首先,为了绘制正弦、余弦曲线,需要导入matplotlib.pyplot和NumPy模块。在绘制第一个图像之前,通过 plt.rcParams['lines.color']= 'r'语句显式地设置线条颜色为红色;接下来,对于第二个图像(余弦曲线),通过语句plt.rcParams['lines. linewidth'] = '3'显式地设定线宽为 3 个点。

如果需要重置设置,需要调用matplotlib.rcdefaults()方法。1.9 为项目设置matplotlib参数

本节介绍matplotlib使用的各种配置文件的位置,以及使用这些配置文件的意义。同时还将介绍配置文件中的具体配置项。1.9.1 准备工作

如果不想在每次使用 matplotlib 时都在代码开始部分进行配置(像前一节我们做的那样),就需要为不同的项目设定不同的默认配置项。本节将介绍如何做到这一点。这种配置方式使得配置项与代码分离,从而使代码更加整洁。此外,你可以很容易在同事间甚至项目间分享配置模板。1.9.2 配置方法

假设一个项目对于matplotlib的特性参数总会设置相同的值,就没有必要在每次编写新的绘图代码时都进行相同的配置。取而代之的,应该是在代码之外,使用一个永久的文件设定matplotlib参数默认值。

通过 matplotlibrc 来配置文件,matplotlib 提供了对这种配置方式的支持。在matplotlibrc文件中包含了绝大部分可以变更的属性。1.9.3 配置过程说明

配置文件可能存在于三个不同的位置,而它们的位置决定了它们的应用范围。这三个位置分别说明如下。

◆ 当前工作目录:即代码运行的目录。在当前目录下,可以为目录所包含的当前项目代码定制matplotlib配置项。配置文件的文件名是matplotlibrc。

◆ 用户级.matplotlib/matplotlibrc 文件(Per user .matplotlib/matplotlibrc):通常是在用户的$HOME 目录下(在 Windows 系统中,也就是 Documents and Settings 目录)。可以用 matplotlib.get_configdir()命令来找到当前用户的配置文件目录。请参考随后的命令示例。

◆ 安装级配置文件(Per installation configuration file):通常在python的site-packages目录下。这是系统级配置,不过在每次重新安装matplotlib后,配置文件会被覆盖。因此如果希望保持持久有效的配置,最好选择在用户级配置文件中进行设置。对于笔者来说,目前对本配置文件的最佳应用方式,是将其作为默认配置模板。如果在用户级配置文件已经比较混乱,或者需要为新项目做全新配置时,可以基于该配置文件进行设置。

在shell中运行下面的命令,即可打印出配置文件目录的位置:

$ python -c 'import matplotlib as mpl; print mpl.get_configdir()'

配置文件包括以下配置项。

◆ axes:设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示。

◆ backend:设置目标输出 TkAgg和 GTKAgg。

◆ figure:控制 dpi、边界颜色、图形大小和子区(subplot)设置。

◆ font:字体集(font family)、字体大小和样式设置。

◆ grid:设置网格颜色和线型。

◆ legend:设置图例和其中文本的显示。

◆ line:设置线条(颜色、线型、宽度等)和标记。

◆ patch:是填充 2D 空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。

◆ savefig:可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。

◆ text:设置字体颜色、文本解析(纯文本或 latex 标记)等。

◆ verbose:设置 matplotlib 在执行期间信息输出,如 silent、helpful、debug 和debug-annoying。

◆ xticks 和 yticks:为 x、y 轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。1.9.4 补充说明

如果你想了解前面提到的(和我们没有提到的)每个设置的详细信息,最好的方式是访问 matplotlib 项目的网站,那里提供了最新的 API 文档。如果需要获得进一步帮助,可以在用户和开发邮件组留言。本书最后还提供了一些有用的在线资源。第2章了解数据

在本章中,我们会介绍以下内容。

◆ 从 CSV 文件导入数据

◆ 从 Microsoft Excel 文件导入数据

◆ 从定宽数据文件导入数据

◆ 从制表符分隔的文件导入数据

◆ 从 JSON 数据源导入数据

◆ 导出数据到 JSON、CSV 和 Excel

◆ 从数据库导入数据

◆ 清理异常值

◆ 读取大块数据文件

◆ 读取流数据源

◆ 导入图像数据到 NumPy 数组

◆ 生成可控的随机数据集合

◆ 真实数据的噪声平滑处理2.1 简介

本章涵盖了导入和导出各种格式数据的基本知识。除此之外,还包括清理数据的方式,比如值的归一化处理、缺失数据的添加、实时数据检查以及一些类似的技巧,以便正确地准备数据来进行可视化。2.2 从CSV文件导入数据

在本节中,我们将处理每个人都能接触到的最常用的文件格式——CSV。顾名思义,CSV是指逗号分隔的值(文件中还包括一个文件头,也是以逗号分隔的)。

Python中有个csv模块支持读写各种方言格式的CSV文件。方言是很重要的,因为没有一个统一的CSV标准,不同的应用实现CSV的方式略有不同。当看到文件内容的时候,你往往就能很容易地辨认出文件使用的是哪种方言。2.2.1 准备工作

在本节中,我们把ch02-data.csv文件的内容用作示例数据,你可以把它下载到本地。

我们假定示例数据文件和读取数据文件的代码在相同目录下。2.2.2 操作步骤

下面的示例代码解释了如何从CSV文件导入数据,步骤如下。

1.打开ch02-data.csv文件。

2.首先读取文件头。

3.然后读取剩余行。

4.当发生错误时抛出异常。

读取完所有内容后,打印文件头和其余所有行。

import csv

filename = 'ch02-data.csv'

data = []

try:

with open(filename) as f:

reader = csv.reader(f)

header = reader.next()

data = [row for row in reader]

except csv.Error as e:

print "Error reading CSV file at line %s: %s" % (reader.line_num, e)

sys.exit(-1)

if header:

print header

print '=================='

for datarow in data:

print datarow2.2.3 工作原理

首先,导入csv模块以便能访问所需的方法。然后,用with语句打开数据文件并把它绑定到对象f。不必操心在操作完资源后去关闭数据文件,with语句的上下文管理器会帮助处理。这在操作资源型文件时非常方便,因为它能确保在代码块执行完毕后资源会被释放掉(比如关闭文件)。

然后,用csv.reader()方法返回reader对象,通过该对象遍历所读取文件的所有行。在这里,每行内容不过是一个值列表,在循环中被打印出来。

文件的第一行是文件头,用来描述文件中每列的数据,在读取时多少有些不同。文件头并不是必需的,有些CSV文件就不带文件头,但是它们确实是提供数据集合的最小元数据信息的一个不错的方式。然而,有时候会碰到用分隔的文本或者仅用作元数据的CSV文件,来描述数据格式和附加数据的情况。

此时只能打开文件来看看第一行是数据头还是数据(例如查看文件的前几行)。这在Linux系统上用bash命令如head可以很容易做到,格式如下所示。

$ head some_file.csv

在遍历数据时,我们把第一行存储为文件头,把其他行添加到数据列表中。

读取文件时一旦出了问题,csv.reader()方法会生成错误信息。为了能帮助用户发现问题,可以捕获这些错误信息并给用户打印出有用的信息。2.2.4 补充说明

如果想了解csv模块的来龙去脉,可以看一下PEP文档中的《CSV文件API》,参见http://www.python.org/dev/peps/pep-0305/。

如果想加载大数据文件,明智的做法通常是使用一些著名的库如NumPy的loadtxt()方法,这个方法可以很好地处理CSV大数据文件。

基本用法非常简单,如下面的代码段所示。

import numpy

data=numpy.loadtxt('ch02-data.csv',dtype='string', delimiter=',')

值得注意的是,为了能让NumPy正确地分隔数据,需要定义分隔符。numpy.loadtxt()方法比类似的numpy.genfromtxt()方法要快一些,但是后者能更好地处理缺失数据,而且在处理已加载文件的某些列时,可以使用一些方法来做些额外的事情。

目前,在 Python 2.7.x 版本中,csv模块不支持 Unicode 编码,必须把读取的数据显式地转换成可打印的UTF-8或者ASCII编码。官方的Python CSV文档提供了一些解决数据编码问题的很好的示例。

Python3.3及后续版本默认支持Unicode编码,不存在此类问题。2.3 从Microsoft Excel文件中导入数据

虽然 Microsoft Excel 支持一些画图操作,但如果需要更加灵活和强大的可视化效果,就需要把数据从表单中导出到Python中以备将来之需。

从Excel文件导入数据的通常做法是把数据从Excel中导出到 CSV格式的文件中,然后用上节中提到的方法使用Python从CSV文件中导入数据。如果只有一两个文件(并且安装了 Microsoft Excel 或者 OpenOffice.org),事情就相当简单。但是如果想自动化地对大量文件进行数据管道处理(作为数据连续处理流程的一部分),那么手动把每个Excel文件转换成CSV文件的做法就行不通了。因此,我们需要一种方法来读取Excel文件。

通过www.python-excel.org项目提供的软件包,Python可以很好地支持Excel文件的读写操作。对读操作和写操作的支持是通过不同模块实现的,而且是平台无关的。换言之,我们不必为了读取Excel文件而必须要在Windows平台上工作。

Microsoft Excel 文件格式随着时间发生着变化,不同的 Python

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载