Main menu

Pages

Python for Everybody: Exploring Data in Python 3

Python for Everybody: Exploring Data in Python 3

 "Python for Everybody: Exploring Data in Python 3" is a textbook that aims to teach programming and data analysis to beginners using the Python programming language. It covers basic programming concepts, such as variables, loops, and functions, as well as more advanced topics like file handling, regular expressions, and using Python libraries for data analysis. The book also includes exercises and examples to help readers practice and apply the concepts they have learned. The ultimate goal of the book is to help readers understand how to work with and analyze data using Python.


"Python for Everybody: Exploring Data in Python 3" is a textbook that aims to teach the Python programming language and how to work with data using Python. The book covers various topics such as:


- Basic Python programming concepts such as variables, loops, and functions

- Working with data using built-in data structures like lists, dictionaries, and tuples

- Reading and writing files

- Using Python modules such as regular expressions and the JSON library

- Retrieving data from the web using Python libraries like urllib and Beautiful Soup

- Using Python to access databases

- Data visualization using the matplotlib library.


Overall, the book is designed to provide a comprehensive introduction to using Python for data analysis and manipulation.


Contents


1 Why should you learn to write programs? 1

1.1 Creativity and motivation . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Computer hardware architecture . . . . . . . . . . . . . . . . . . . 3

1.3 Understanding programming . . . . . . . . . . . . . . . . . . . . . 4

1.4 Words and sentences . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5 Conversing with Python . . . . . . . . . . . . . . . . . . . . . . . . 6

1.6 Terminology: interpreter and compiler . . . . . . . . . . . . . . . . 8

1.7 Writing a program . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.8 What is a program? . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.9 The building blocks of programs . . . . . . . . . . . . . . . . . . . . 11

1.10 What could possibly go wrong? . . . . . . . . . . . . . . . . . . . . 12

1.11 The learning journey . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.12 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.13 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 Variables, expressions, and statements 19

2.1 Values and types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3 Variable names and keywords . . . . . . . . . . . . . . . . . . . . . . 21

2.4 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5 Operators and operands . . . . . . . . . . . . . . . . . . . . . . . . 22

2.6 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.7 Order of operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.8 Modulus operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.9 String operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.10 Asking the user for input . . . . . . . . . . . . . . . . . . . . . . . 24

2.11 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.12 Choosing mnemonic variable names . . . . . . . . . . . . . . . . . . 26

2.13 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.14 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.15 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Conditional execution 31

3.1 Boolean expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2 Logical operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.3 Conditional execution . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4 Alternative execution . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5 Chained conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.6 Nested conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.7 Catching exceptions using try and except . . . . . . . . . . . . . . 36

3.8 Short-circuit evaluation of logical expressions . . . . . . . . . . . . 37

3.9 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.10 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4 Functions 43

4.1 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2 Built-in functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.3 Type conversion functions . . . . . . . . . . . . . . . . . . . . . . . 44

4.4 Random numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.5 Math functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.6 Adding new functions . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.7 Definitions and uses . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.8 Flow of execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.9 Parameters and arguments . . . . . . . . . . . . . . . . . . . . . . 50

4.10 Fruitful functions and void functions . . . . . . . . . . . . . . . . . . 51

4.11 Why functions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.12 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.13 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.14 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5 Iteration 57

5.1 Updating variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.2 The while statement . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.3 Infinite loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.4 “Infinite loops” and break . . . . . . . . . . . . . . . . . . . . . . . 58

5.5 Finishing iterations with continue . . . . . . . . . . . . . . . . . . 59

5.6 Definite loops using for . . . . . . . . . . . . . . . . . . . . . . . . 60

5.7 Loop patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.7.1 Counting and summing loops . . . . . . . . . . . . . . . . . . 61

5.7.2 Maximum and minimum loops . . . . . . . . . . . . . . . . 62

5.8 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

6 Strings 67

6.1 A string is a sequence . . . . . . . . . . . . . . . . . . . . . . . . . 67

6.2 Getting the length of a string using len . . . . . . . . . . . . . . . 68

6.3 Traversal through a string with a loop . . . . . . . . . . . . . . . . 68

6.4 String slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

6.5 Strings are immutable . . . . . . . . . . . . . . . . . . . . . . . . . 70

6.6 Looping and counting . . . . . . . . . . . . . . . . . . . . . . . . . 70

6.7 The in operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.8 String comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.9 string methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.10 Parsing strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.11 Format operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.12 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6.13 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

6.14 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

7 Files 79

7.1 Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

7.2 Opening files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

7.3 Text files and lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

7.4 Reading files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

7.5 Searching through a file . . . . . . . . . . . . . . . . . . . . . . . . 83

7.6 Letting the user choose the file name . . . . . . . . . . . . . . . . . 85

7.7 Using try, except, and open . . . . . . . . . . . . . . . . . . . . 86

7.8 Writing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

7.9 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

7.10 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

7.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

8 Lists 91

8.1 A list is a sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

8.2 Lists are mutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

8.3 Traversing a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

8.4 List operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

8.5 List slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

8.6 List methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

8.7 Deleting elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

8.8 Lists and functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

8.9 Lists and strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

8.10 Parsing lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

8.11 Objects and values . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

8.12 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

8.13 List arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

8.14 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

8.15 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

8.16 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

9 Dictionaries 109

9.1 Dictionary as a set of counters . . . . . . . . . . . . . . . . . . . . . 111

9.2 Dictionaries and files . . . . . . . . . . . . . . . . . . . . . . . . . . 112

9.3 Looping and dictionaries . . . . . . . . . . . . . . . . . . . . . . . . 113

9.4 Advanced text parsing . . . . . . . . . . . . . . . . . . . . . . . . . 115

9.5 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

9.6 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

9.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

10 Tuples 119

10.1 Tuples are immutable . . . . . . . . . . . . . . . . . . . . . . . . . 119

10.2 Comparing tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

10.3 Tuple assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

10.4 Dictionaries and tuples . . . . . . . . . . . . . . . . . . . . . . . . . 123

10.5 Multiple assignment with dictionaries . . . . . . . . . . . . . . . . 124

10.6 The most common words . . . . . . . . . . . . . . . . . . . . . . . 125

10.7 Using tuples as keys in dictionaries . . . . . . . . . . . . . . . . . . 126

10.8 Sequences: strings, lists, and tuples - Oh My! . . . . . . . . . . . . 126

10.9 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

10.10Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

10.11Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

11 Regular expressions 131

11.1 Character matching in regular expressions . . . . . . . . . . . . . . 132

11.2 Extracting data using regular expressions . . . . . . . . . . . . . . 133

11.3 Combining searching and extracting . . . . . . . . . . . . . . . . . 136

11.4 Escape character . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

11.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

11.6 Bonus section for Unix / Linux users . . . . . . . . . . . . . . . . . . 141

11.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

11.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

11.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

12 Networked programs 145

12.1 HyperText Transport Protocol - HTTP . . . . . . . . . . . . . . . 145

12.2 The World’s Simplest Web Browser . . . . . . . . . . . . . . . . . . 146

12.3 Retrieving an image over HTTP . . . . . . . . . . . . . . . . . . . 147

12.4 Retrieving web pages with urllib . . . . . . . . . . . . . . . . . . 150

12.5 Parsing HTML and scraping the web . . . . . . . . . . . . . . . . . . 151

12.6 Parsing HTML using regular expressions . . . . . . . . . . . . . . . . 151

12.7 Parsing HTML using BeautifulSoup . . . . . . . . . . . . . . . . . 152

12.8 Reading binary files using urllib . . . . . . . . . . . . . . . . . . . . 154

12.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

12.10Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

13 Using Web Services 157

13.1 eXtensible Markup Language - XML . . . . . . . . . . . . . . . . . 157

13.2 Parsing XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

13.3 Looping through nodes . . . . . . . . . . . . . . . . . . . . . . . . . 159

13.4 JavaScript Object Notation - JSON . . . . . . . . . . . . . . . . . . 160

13.5 Parsing JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

13.6 Application Programming Interfaces . . . . . . . . . . . . . . . . . . 161

13.7 Google geocoding web service . . . . . . . . . . . . . . . . . . . . . 163

13.8 Security and API usage . . . . . . . . . . . . . . . . . . . . . . . . 165

13.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

13.10Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

14 Object-Oriented Programming 171

14.1 Managing Larger Programs . . . . . . . . . . . . . . . . . . . . . . . 171

14.2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

14.3 Using Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

14.4 Starting with Programs . . . . . . . . . . . . . . . . . . . . . . . . 173

14.5 Subdividing a Problem - Encapsulation . . . . . . . . . . . . . . . 175

14.6 Our First Python Object . . . . . . . . . . . . . . . . . . . . . . . 176

14.7 Classes as Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

14.8 Object Lifecycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

14.9 Many Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

14.10Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

14.11Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

14.12Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

15 Using databases and SQL 185

15.1 What is a database? . . . . . . . . . . . . . . . . . . . . . . . . . . 185

15.2 Database concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

15.3 Database Browser for SQLite . . . . . . . . . . . . . . . . . . . . . 186

15.4 Creating a database table . . . . . . . . . . . . . . . . . . . . . . . 186

15.5 Structured Query Language summary . . . . . . . . . . . . . . . . 189

15.6 Spidering Twitter using a database . . . . . . . . . . . . . . . . . . . 191

15.7 Basic data modeling . . . . . . . . . . . . . . . . . . . . . . . . . . 196

15.8 Programming with multiple tables . . . . . . . . . . . . . . . . . . 197

15.8.1 Constraints in database tables . . . . . . . . . . . . . . . . 200

15.8.2 Retrieve and/or insert a record . . . . . . . . . . . . . . . . . 201

15.8.3 Storing the friend relationship . . . . . . . . . . . . . . . . . . 201

15.9 Three kinds of keys . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

15.10Using JOIN to retrieve data . . . . . . . . . . . . . . . . . . . . . . 203

15.11Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

15.12Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

15.13Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

16 Visualizing data 209

16.1 Building a Google map from geocoded data . . . . . . . . . . . . . 209

16.2 Visualizing networks and interconnections . . . . . . . . . . . . . . . 211

16.3 Visualizing mail data . . . . . . . . . . . . . . . . . . . . . . . . . . 214

A Contributions 221

A.1 Contributor List for Python for Everybody . . . . . . . . . . . . . . 221

A.2 Contributor List for Python for Informatics . . . . . . . . . . . . . . 221

A.3 Preface for “Think Python” . . . . . . . . . . . . . . . . . . . . . . . 221

A.3.1 The strange history of “Think Python” . . . . . . . . . . . . 221

A.3.2 Acknowledgements for “Think Python” . . . . . . . . . . . 223

A.4 Contributor List for “Think Python” . . . . . . . . . . . . . . . . . 223


Comments

table of contents title