Beginning Python Visualization: Crafting Visual Transformation Scripts

Shai Vaingast

at a Glace

Navigating the World of Data Visualization
The Environment
Python for Programmers
Data Organization
Processing Text Files
Graphs and Plots
Math Games
Science and Visualization
Image Processing
Advanced File Processing
APPENDIX Additional Source Listing

e-books shop
e-books shop
Purchase Now !
Just with Paypal



Book Details
 Price
 2.00 USD
 Pages
 379 p
 File Size
 2,866 KB
 File Type
 PDF format
 ISBN-13 (pbk)
 ISBN-13 (electronic) 
 978-1-4302-1843-2
 978-1-4302-1844-9
 Copyright   
 2009 by Shai Vaingast  

About the Author
SHAI VAINGAST has been an engineer, an engineering manager, and
a director of engineering since 1993. He has worked in the defense
industry and in the medical device industry while being heavily
involved with data processing and visualization. He has several patents.

About the Technical Reviewer
C. TITUS BROWN is a professor of Computer Science and Engineering and Microbiology and
Molecular Genetics at Michigan State University, where he studies developmental biology.
Dr. Brown has been using Python for about a decade, and he is the author of several Python
bioinformatics packages as well as several testing tools.

Introduction
I was always drawn to math and computers, ever since I was a kid playing computer games
on my Sinclair ZX81. When I attended university, I had a special interest in numerical analysis,
a field that I felt combines math and computers ideally. During my career, I learned of
MATLAB, widely popular for digital signal processing, numerical analysis, and feedback and
control. MATLAB’s strong suits include a high-level programming language, excellent graphing
capabilities, and numerous packages from almost every imaginable engineering field. But
I found that MATLAB wasn’t enough. I worked with very large files and needed the ability to
manipulate both text and data. So I combined Perl, AWK, and Bash scripts to write programs
that automate data analysis and visualization. And along the way, I’ve developed practices and
ideas involving the organization of data—for example, ways to ensure file names are unique
and self-explanatory.

With the increasing popularity of the Internet, I learned of GNU/Linux and the open
source movement. I made an effort to use open source software whenever possible, and so I’ve
learned of GNU-Octave and gnuplot, which together provide excellent scientific computing
functionality. That fit well on my Linux machine: Bash scripts, Perl and AWK, GNU-Octave and gnuplot.

Knowing I was interested in programming languages and open source software, a friend
suggested I give Python a try. My first impression was that it’s just another programming language:
I can do most anything I need with Perl and Bash, resorting to C/C++ if things got hairy.
And I’d still need GNU-Octave and gnuplot, so what’s to gain? Eventually, I did learn Python
and discovered that it is far better than my collection of tools. Python provides something that
is extremely appealing: it’s a one-stop shop—you can do it all in Python.

I’ve shared my enthusiasm with friends and colleagues. Many who expressed interest with
the ideas of data processing and visualization would ask, “Can you recommend a book that
teaches the ideas you’re preaching?” And I would tell them, “Of course, numerous books cover
this subject!” But they didn’t want numerous books, just one, with information distilled to
focus on data analysis and visualization. I realized there wasn’t such a title, and this was how
the idea for this book originated.


Table of Contents
About the Author. . . . . . . . . . . . . . .. . . . . . . . . . . xv
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . .xvi
Acknowledgments . . . .  . . . . . . . . . . . . . . xvii
Introduction . . . . .  . . . . . . . . . . . . . . . . . xviii
CHAPTER 1 Navigating the World of Data Visualization
Gathering Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Case Study: GPS Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Scanning Serial Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Recording GPS Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Data Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
File Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Data Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Data Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Walking Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Reading CSV Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Analyzing GPS Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Extracting GPS Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Data Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
GPS Location Plot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Annotating the Graph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Velocity Plot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Subplots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Tying It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
CHAPTER 2 The Environment
Operating Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Choosing an Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Then Again, Why Choose? Using Several Operating Systems . . . . . 36
The Python Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Python Integrated Development Environments. . . . . . . . . . . . . . . . . . 39
Scientific Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Plotting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Image Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Additional Python Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Installation Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Additional Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
A Short List of Text Editors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Spreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Word Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Image Viewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Version Control Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Licensing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
CHAPTER 3 Python for Programmers 
What Is Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Interactive Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Invoking Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Entering Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
The Interactive Help System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Moving Around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Running Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Printing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Some Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Defining Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Generators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Generator Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Modules and Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
The import Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Modules Installed in a System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
The dir Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
CHAPTER 4 Data Organization
File Name Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Date and Time in a File Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Useful File Name Titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
File Name Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
In Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Other Schemes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
CSV File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Binary Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Readme Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
INI Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Other File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Locating Data Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Organization into Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Searching for Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Catalogs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Files vs. a Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
CHAPTER 5 Processing Text Files
Text and Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Splitting Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Joining Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Converting Strings to Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Find and Replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Stripping Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
String Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
String Conditionals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
More on Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Opening a File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Closing a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Writing Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Reading Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Working with Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Example: Character, Word, and Line Count. . . . . . . . . . . . . . . . . . . . 151
Example: head and tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Example: Splitting and Combining Files. . . . . . . . . . . . . . . . . . . . . . . 153
Example: Searching Inside a Text File . . . . . . . . . . . . . . . . . . . . . . . . 155
Example: Working with Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Example: Extracting Numbers from a Text File. . . . . . . . . . . . . . . . . 157
CSV Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The csv Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The csv.reader Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
The csv.writer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
More csv Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
DictReader and DictWriter Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Date and Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Time Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
The struct_time Tuple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Parsing and Formatting Date and Time . . . . . . . . . . . . . . . . . . . . . . . 165
The Epoch: “Linearizing” the Time Base . . . . . . . . . . . . . . . . . . . . . . 168
Additional Time and Date Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Regular Expression Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Special Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Alternatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Ranges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
When to Use Regular Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Internationalization and Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Locale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Unicode Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
CHAPTER 6 Graphs and Plots
The Matplotlib Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Interactive Graphs vs. Image Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Interactive Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Saving Graphs to Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Plotting Graphs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Lines and Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Plotting Several Graphs on One Figure. . . . . . . . . . . . . . . . . . . . . . . . 191
Line Widths and Marker Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Controlling the Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Axis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Grid and Ticks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Subplots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Erasing the Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Adding Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Title. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Axis Labels and Legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Text Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Mathematical Symbols and Expressions . . . . . . . . . . . . . . . . . . . . . . 200
More Graph Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Bar Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Pie Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Logarithmic Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Polar Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Stem Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Additional Graphs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Getting and Setting Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Setting Figure and Axis Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Example: Adding Arrows to a Graph . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Example: Some Other Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
CHAPTER 7 Math Games
Modules math and cmath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Example: A Newton Fractal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Module random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Using random to Solve Probability Questions . . . . . . . . . . . . . . . . . . 229
Random Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Module NumPy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Array Creation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Slicing, Indexing, and Reshaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
N-Dimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Math Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Array Methods and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Other Useful Array Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
CHAPTER 8 Science and Visualization
Finding Your Way: Variables and Functions . . . . . . . . . . . . . . . . . . . . . . . . 250
SciPy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Linear Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Solving a System of Linear Equations . . . . . . . . . . . . . . . . . . . . . . . . 251
Vector and Matrix Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Matrix Decomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Additional Linear Algebra Functionality . . . . . . . . . . . . . . . . . . . . . . . 254
Numerical Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
More Integration Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Interpolation and Curve Fitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Piecewise Linear Interpolation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Polynomials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Uses of Polynomials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Spline Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Solving Nonlinear Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Special Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Signal Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Functions where, select, and find . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Functions diff and split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Fourier Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Example: FFT of a Sampled Cosine Wave . . . . . . . . . . . . . . . . . . . . . 276
Window Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Filter Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Example: Heart-Rate Monitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Example: Moving Average . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
CHAPTER 9 Image Processing
Reading, Writing, and Displaying Images . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Reading Images from File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Image Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Displaying Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Converting File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Image Manipulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Creating New Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Copy and Paste. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Crop and Resize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Rotate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Image Annotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Annotating with Geometrical Shapes . . . . . . . . . . . . . . . . . . . . . . . . . 294
Text Annotations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Image Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Matrix Representation and Colors. . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Example: Counting Objects (Five Parts) . . . . . . . . . . . . . . . . . . . . . . . 303
Image Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Image Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
CHAPTER 10 Advanced File Processing
Binary Files and Random Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Example: Reading the Nth Field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Example: Efficient Tail Implementation . . . . . . . . . . . . . . . . . . . . . . . 322
Example: Creating a Fixed-Size File . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Example: Recording Time-Based Binary Data . . . . . . . . . . . . . . . . . 323
Object Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
The Pickle Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Command-Line Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
argv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Example: Creating a Fixed-Size File (Stand-Alone Script) . . . . . . . 328
OptParse Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
The FileInput Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
File and Directory Manipulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Module glob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Additional os Module Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Additional os.path Module Functionality . . . . . . . . . . . . . . . . . . . . . . 335
Module shutil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
File Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Example: A Compressed tar File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Comparing Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Module filecmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Module difflib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Final Notes and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
APPENDIX Additional Source Listing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Nudge Subplots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Magic Square Arrows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Fractal Function Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
INDEX . . . .. . . . . . . . . . . . . . . . . 349

Bookscreen
e-books shop

Who This Book Is For
Although this book is about software, the target audience is not necessarily programmers or
computer scientists. The reader’s main line of work is research or R&D, in his or her field of
interest, be it astrophysics, signal and image processing, or biology. 
working on their thesis, dealing with large experimental data sets. The book also
appeals to students working on purely theoretical projects, as they require simulations
and means to analyze the results.
chemical engineering: engineers working with large sets of data from multiple sources.
In EE more specifically, signal processing engineers, communication engineers, and
systems engineers will find the book appealing.
world, willing to dive into a new world of tools.
Python to support their hobby.
The book can be appealing to these groups for different reasons. For scientists and engineers,
the book provides the means to be more productive in their work, without investing a
considerable amount of time learning new tools and programs that constantly change. For
programmers and computer enthusiasts, the book can serve as an appetizer, opening up their
world to Python. And because of the unique approach presented here, they might share the
enthusiasm the author has for this wonderful software world. Perhaps it will even entice them
to be part of the large and growing open source community, sharing their own code.
It is assumed that the reader does have minimal proficiency with a computer; namely he
or she must know how to manipulate files, install applications, view and edit files, and use
applications to generate reports and presentations. Background in numerical analysis, signal
processing, and image processing, as well as programming, is of help, but not required.
This book does not intend to serve as an encyclopedia of programming in Python and the
covered packages; nor does it try to be complete. It serves as an introduction to data analysis
and visualization in Python and covers most of the topics associated with that field.
Previous Post Next Post