└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Python Resources 2 | 3 | Open resources for learning and using the Python programming language. 4 | 5 | ## Table of Contents 6 | 7 | - [Overview](#overview) 8 | - [Standard Python](#standard-python) 9 | - [Scientific Python](#scientific-python) 10 | - [Exercises](#exercises) 11 | - [Topics](#topics) 12 | 13 | ## Overview 14 | 15 | Python is a popular general-purpose programming language, with a lot of available materials covering lots of different topics. This list is focused on curating materials focused on learning the basics of the Python programming language (the standard library), as well as the tools available for numerical and scientific computing. 16 | 17 | The Python programming language is managed by the [Python Software Foundation](https://www.python.org/psf-landing/), which hosts their own [documentation page](https://docs.python.org/3/), as well as their own guide on [getting started with Python](https://www.python.org/about/gettingstarted/). 18 | 19 | In terms of **version**, Python is now firmly on Python3, and it is recommended to use the most recent 3.X stable release of Python. Note that Python2 is [effectively retired](https://python3statement.org), and there are many useful updates that make Python3 [worth updating to](https://github.com/arogozhnikov/python3_with_pleasure). 20 | 21 | In terms of **distributions and/or platforms** to manage Python, there are many, but a pretty typical approach is to use the [anaconda distribution](https://www.anaconda.com/distribution/) to get and manage Python, and to use the [Jupyter](https://jupyter.org) ecosystem, including their notebooks, for interactive computing. 22 | 23 | For more generalized lists of Python resources, there are some other relevant lists: 24 | - the [awesome Python list](https://github.com/vinta/awesome-python) of everything Python 25 | - the [awesome Jupyter list](https://github.com/markusschanta/awesome-jupyter) of everything Jupyter 26 | - the [awesome scientific Python list](https://github.com/rossant/awesome-scientific-python) of scientific Python 27 | 28 | ## Standard Python 29 | 30 | The following are openly available courses, resources and/or tutorials for learning standard library Python. 31 | 32 | ### Python Cheatsheet 33 | 34 | The Python cheatsheet is a comprehensive collection of notes on standard library Python. 35 | 36 | [HomePage](https://gto76.github.io/python-cheatsheet/) - 37 | [Github](https://github.com/gto76/python-cheatsheet) 38 | 39 | ### Introductory Python 40 | 41 | Introduction to Python is a course taught and developed at UC San Diego (as COGS18) with openly available materials for learning Python. 42 | 43 | [Homepage](https://introductorypython.github.io/) - 44 | [Github](https://github.com/COGS18) 45 | 46 | ### Software Carpentry 47 | 48 | Software Carpentry creates lessons aimed at scientists, and has some lessons on the Python programming language. 49 | 50 | [Homepage](https://software-carpentry.org/) - 51 | [Python Lesson 1](http://swcarpentry.github.io/python-novice-inflammation/) - 52 | [Python Lesson 2](http://swcarpentry.github.io/python-novice-gapminder/) 53 | 54 | ### Codecademy 55 | 56 | Codecademy has an online tutorial for Python, with an online interactive interpreter to try out some code. 57 | 58 | You may need to sign-up for codecademy, but you can do many of the lessons for free. 59 | 60 | [Homepage](https://www.codecademy.com/) 61 | 62 | ### Whirlwind Tour of Python 63 | 64 | Whirlwind tour of Python, by Jake VanderPlas, is a quick introduction to the Python programming language, aimed at people who already have a general sense of programming and want to learn the Python syntax. 65 | 66 | [Homepage](https://www.oreilly.com/library/view/a-whirlwind-tour/9781492037859/) - 67 | [Textbook](http://www.oreilly.com/programming/free/files/a-whirlwind-tour-of-python.pdf) - 68 | [Github](https://github.com/jakevdp/WhirlwindTourOfPython) 69 | 70 | ### Python for Everybody 71 | 72 | PY4E, by Dr. Chuck, is a set of free materials, including lessons and videos, for learning to program in Python. 73 | 74 | [Homepage](https://www.py4e.com/) - 75 | [Course](https://dabeaz-course.github.io/practical-python/Notes/Contents.html) - 76 | [Lessons](https://www.py4e.com/lessons) 77 | 78 | ### Practical Python Programming 79 | 80 | Practical Python Programming, by David Beazley, is an openly available course on the Python programming language. 81 | 82 | [Homepage](https://dabeaz-course.github.io/practical-python/) - 83 | [Github](https://github.com/dabeaz-course/practical-python) 84 | 85 | ### Python in 4 Hours 86 | 87 | This video lesson, from freeCodeCamp.Org, is brief course introducing the Python programming language. 88 | 89 | [Video](https://www.youtube.com/watch?v=rfscVS0vtbw) 90 | 91 | ### Python Tips: Intermediate Python 92 | 93 | Intermediate Python is a collection of materials for learning intermediate-level tips and tricks in Python. 94 | 95 | [Homepage](https://book.pythontips.com/en/latest/) - 96 | [Github](https://github.com/yasoob/intermediatePython) 97 | 98 | ## Scientific Python 99 | 100 | 'Scientific Python' refers to the tools and communities in Python that focus on numerical, scientific & data applications. 101 | 102 | Generally, this is clustered around the [scipy](https://www.scipy.org/about.html) ecosystem. 103 | 104 | The core scientific computing tools in Python include: 105 | - [numpy](https://numpy.org) for numerical computing, and data array management 106 | - [pandas](https://pandas.pydata.org) for managing and analyzing heterogeneous data 107 | - [matplotlib](https://matplotlib.org) for plotting and all kinds of visualizations 108 | - [scipy](https://www.scipy.org/scipylib/index.html) for general scientific computing 109 | - [scikit-learn](https://scikit-learn.org/stable) for machine learning 110 | 111 | Each of the above tools have their own documentation, user guides and tutorials for learning their respective tools and applications. 112 | 113 | ### Scipy Lectures 114 | 115 | The scipy organization has a course for learning the scipy ecosystem. 116 | 117 | [Homepage](https://scipy-lectures.org/) - 118 | [Github](https://github.com/scipy-lectures/scipy-lecture-notes) 119 | 120 | ### Python Data Science Handbook 121 | 122 | The Python Data Science Handbook, by Jake VanderPlas, is an openly available resource for learning data science in Python. 123 | 124 | [Homepage](https://jakevdp.github.io/PythonDataScienceHandbook/) - 125 | [Textbook](http://shop.oreilly.com/product/0636920034919.do) - 126 | [Github](https://github.com/jakevdp/PythonDataScienceHandbook) 127 | 128 | ### Data Science in Practice 129 | 130 | Data Science in Practice is a course taught and developed at UC San Diego (as COGS108) with openly available materials for learning data science with Python. 131 | 132 | [Website](https://datascienceinpractice.github.io/) - 133 | [Github](https://github.com/COGS108) 134 | 135 | ### Numerical Tours in Python 136 | 137 | Numerical tours in Python is a collection of materials exploring topics within numerical computing. 138 | 139 | [Homepage](https://www.numerical-tours.com/python/) 140 | 141 | ### From Python to Numpy 142 | 143 | From Python to Numpy, by Nicolas Rougier, is an in depth introduction to numpy, for those who have some familiarity with the standard library. 144 | 145 | [Homepage](https://www.labri.fr/perso/nrougier/from-python-to-numpy/) - 146 | [Github](https://github.com/rougier/from-python-to-numpy) 147 | 148 | ### IPython Cookbook 149 | 150 | The IPython Cookbook is an openly available collection of numerical computing examples and workflows, in Jupyter notebooks. 151 | 152 | [Homepage](https://ipython-books.github.io) - 153 | [Github](https://github.com/ipython-books/cookbook-2nd) 154 | 155 | ### Python for Data Analysis 156 | 157 | Python for Data Analysis, by Luke Thompson, is an introduction to doing data science in Python, with Jupyer notebooks. 158 | 159 | [Github](https://github.com/cuttlefishh/python-for-data-analysis) 160 | 161 | ### University of Michigan Girls Who Code Materials 162 | 163 | Introductory materials, starting at basic Python and working through numerical computation and data management, using practice notebooks. 164 | 165 | [Github](https://github.com/GWC-DCMB/curriculum-notebooks/) - 166 | [Paper](https://jose.theoj.org/papers/10.21105/jose.00138) 167 | 168 | ### Reproducible Data Science with Python Tools and Real-World Data 169 | 170 | This online textbook covers data science work in Python, using real-world datasets, related to the COVID-19 pandemic. 171 | 172 | [HomePage](https://valdanchev.github.io/reproducible-data-science-python/intro.html) - 173 | [Github](https://github.com/valdanchev/reproducible-data-science-python) 174 | 175 | ## Exercises 176 | 177 | The following are collections of exercises to practice using Python. 178 | 179 | The following are exercises related to standard library Python: 180 | - [Pytudes](https://github.com/norvig/pytudes) is a collection of practice problems 181 | - [Python Koans](https://github.com/gregmalcolm/python_koans) is a collection of problems for learning Python 182 | - [The Python Challenge](http://www.pythonchallenge.com/) is a series of 'riddles' that can be solved using Python 183 | 184 | The following are exercises & collections related to scientific computing with Python: 185 | - A collection of [100 numpy exercises](https://github.com/rougier/numpy-100) 186 | - A collection of [algorithms](https://github.com/TheAlgorithms/Python) 187 | - The [100 days of algorithms](https://github.com/coells/100days) challenge 188 | - The [Project Euler](https://projecteuler.net/) collection of math problems 189 | 190 | ## Topics 191 | 192 | The following are guides for specific topics in the Python language: 193 | - A post on [working with lists](https://jeffknupp.com/blog/2018/12/13/how-to-do-just-about-anything-with-python-lists//) 194 | - An explainer of [list comprehensions](https://www.datacamp.com/community/tutorials/python-list-comprehension) 195 | - An overview of [Python Decorators](https://pabloariasal.github.io/python-decorators-from-the-ground-up/) 196 | - An explainer of [@staticmethod & @classmethod](http://stackabuse.com/pythons-classmethod-and-staticmethod-explained/) 197 | --------------------------------------------------------------------------------