Basic Reference for Learning Python =================================== There are clearly too many guide and tutorial for Python, some of which are quite good. Here is just a personal selection. -------------- Basic ----- - `Hitchhiker’s Guide to Python `__ - The actual guide book is `here `__ - `A Byte of Python `__ - “A Byte of Python” is a free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. - `Awesome Python `__ - A curated list of awesome Python frameworks, libraries, software and resources. - `Comprehensive Python Cheatsheet `__ - Made by `Jure Šorn `__. The `source files are here `__ Dig Deeper ---------- - `All Algorithms implemented in Python `__ - These implementations are for learning purposes. They may be less efficient than the implementations in the Python standard library. - Python Standard Library is a very good place to start learning Python: - There are a lot of useful tools in the standard library. - `A brief tour of the standard library `__ - `The Reference of the Python Standard Library `__ Managing Python Packages ------------------------ `Anaconda `__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - **Anaconda** distribution is the easiest way to perform Python/R data science and machine learning on all platforms. It can help you create environments with different Python versions, and manage libraries and dependencies in Python. - It is an easy way to start with Python programming without worrying too much about installing packages all by yourself. - `Getting started with Anaconda `__ and the `Anaconda tutorials `__ are good places to start. - `AstroConda - Conda for astronomers `__ - **AstroConda** is a free Conda channel maintained by the Space Telescope Science Institute (STScI) ### **pip**: Python Package Installer - One important reason to use **Python** in science is that there are already a huge number of great tools prepared to make your life easier. - The most useful tool is `pip - The Python Package Installer `__. - **pip** is the package installer for Python. You can use pip to install packages from the Python Package Index and other indexes - `This complete reference guide `__ is very useful. - `What Is Pip? A Guide for New Pythonistas `__ - `pip-tools - A set of tools to keep your pinned Python dependencies fresh `__ - A set of command line tools to help you keep your pip-based packages fresh, even when you’ve pinned them. Start-up Package ---------------- - The most basic packages you want to use on daily bases. - **Scipy** ecosystem: - `Numpy - Base N-dimensional array package `__ - `SciPy - Fundamental library for scientific computing `__ - `SymPy - a Python library for symbolic mathematics `__ - `Numpy and Scipy Documentation `__ - `Quickstart tutorial of Numpy `__ - `Scipy Lecture Notes - One document to learn numerics, science, and data with Python `__ - `A Visual Intro to NumPy and Data Representation `__ - `pandas - Python Data Analysis Library `__ - **pandas** is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language. - `Online document of pandas `__ - `matplotlib - Comprehensive 2D Plotting `__ - **Matplotlib** is a Python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. - `Online document of matplotlib `__; and the `matplotlib gallery `__ are very helpful resources to learn. - `Bokeh - `__ - **Bokeh** is an interactive visualization library that targets modern web browsers for presentation. Its goal is to provide elegant, concise construction of versatile graphics, and to extend this capability with high-performance interactivity over very large or streaming datasets. - `Bokeh user guide `__ and the `reference guide `__ are very useful. The `gallery of examples `__ is also a good place to start. - Interactive Python computing: - `Jupyter environment `__ - Project **Jupyter** exists to develop open-source software, open-standards, and services for interactive computing across dozens of programming languages. - The **Jupyter** Notebook App is a server-client application that allows editing and running notebook documents via a web browser. - `IPython - Interactive computing `__ - **IPython** provides a rich architecture for interactive computing - `nbviewer - A simple way to share Jupyter notebooks `__ - `Jupyter/IPython Notebook Quick Start Guide `__ - `scikit-learn - Machine learning in Python `__ - **scikit-learn** is a Python module for machine learning built on top of SciPy. - `Online document of scikit-learn `__ and `scikit-learn Tutorials `__ - `scikit-image - Image processing in Python `__ - **scikit-image** is a collection of algorithms for image processing. - `Tutorials of skimage `__ and `gallery of examples `__ are very useful. - `astropy - Community Python library for astronomer `__ - The **Astropy** Project is a community effort to develop a common core package for Astronomy in Python and foster an ecosystem of interoperable astronomy packages. - `Online document of astropy is here `__ - `Learn.Astropy - Tutorials, documentation, and examples of astropy `__ - `Scrapy - A fast high-level web crawling & scraping framework for Python `__ - An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way. Tricks and Tips ---------------