{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Data Visualization with Python\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"### Sachin Joshi\n",
"\n",
"### Research Computing"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Data Visualization\n",
"\n",
"\n",
"- Trying to understand data by placing it in a visual context\n",
"- Helps discover patterns, trends and correaltions that might not be otherwise detected\n",
"- Python offers multiple graphing libraries with lots of different features\n",
"- Create interactive, live or highly customized plots with Python"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Plotting Libraries\n",
"\n",
"- Matplotlib:low level, most popular, provides lots of freedom\n",
"- Pandas Visualization:easy to use interface, built on Matplotlib\n",
"- Seaborn:based on Matplotlib, provides a high-level interace for drawing attractive and informative stastical graphics\n",
"- ggplot:based on R's ggplot2, plots quickly with minimal code\n",
"- Plotly:can create interactive, publication-quality graphs online"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Modules\n",
"\n",
"- A file containing Python definitions and statements\n",
"- Python module is a normal python file which can store function, variable and classes\n",
"- Also include runnable code\n",
"- Module helps us to organize related codes - makes the code easier to understand and run\n",
"- A Python object with arbitarily named attributes that you can bind and reference\n",
"- Popular modules\n",
" * math\n",
" * numpy\n",
" * scipy\n",
" * matplotlib\n",
" * pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Creating Modules\n",
"\n",
"- Create a new file called _mymodule.py_ and write the following code"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"intro = \"This is a dummy module!!\"\n",
"\n",
"def print_func(name):\n",
" print(\"Hello : \", name)\n",
" return"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## The _import_ Statement\n",
"\n",
"- This module defines a global variable _intro_ and a function _print_func_\n",
"- To use this module in a program, you need to **import** the module "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import mymodule"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'This is a dummy module!!'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mymodule.intro"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello : Sachin\n"
]
}
],
"source": [
"mymodule.print_func(\"Sachin\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## The _from...import_ Statement\n",
"\n",
"- Import specific attributes from a module into the current namespace\n",
"- from fib import fibonacci"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello : Sachin\n"
]
}
],
"source": [
"from mymodule import print_func\n",
"print_func(\"Sachin\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"This is a dummy module!!\n"
]
}
],
"source": [
"from mymodule import intro\n",
"print(intro)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## The _from...import *_ Statement\n",
"\n",
"- Imports all names from a module into the current namespace\n",
"- from modname import *"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"This is a dummy module!!\n",
"Hello : Sachin\n"
]
}
],
"source": [
"from mymodule import *\n",
"print(intro)\n",
"print_func(\"Sachin\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Abbreviating the module\n",
"\n",
"- You can also abbreviate the module name by adding **as** to the **import**"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'This is a dummy module!!'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import mymodule as my\n",
"my.intro"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## NumPy\n",
"\n",
"- NumPy is the fundamental package for scientific computing with Python. \n",
"- It contains among other things\n",
" - a powerful N-dimensional array object\n",
" - sophisticated (broadcasting) functions\n",
" - tools for integrating C/C++ and Fortran code\n",
" - useful linear algebra, Fourier transform, and random number capabilities\n",
"- NumPy can also be used as an efficient multi-dimensional container of generic data. \n",
"- Numpy arrays are a great alternative to Python Lists"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- NumPy’s main object is the homogeneous multidimensional array.\n",
"- NumPy’s array class is called *ndarray*. It is also known by the alias *array*\n",
"- The more important attributes of an *ndarray* object are:\n",
" - ndarray.ndim: the number of axes (dimensions) of the array.\n",
" - ndarray.shape: the dimensions of the array.\n",
" - ndarray.size: the total number of elements of the array.\n",
" - ndarray.dtype: an object describing the type of the elements in the array.\n",
" - ndarray.itemsize: the size in bytes of each element of the array.\n",
" - ndarray.data: the buffer containing the actual elements of the array."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- To use Numpy, you need to import the numpy module\n",
" * convention: import as np and then use the dot notation"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Numpy Arrays\n",
"\n",
"- create an array from a regular Python _list_ or _tuple_ using the _array_ function"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2 3 4] int32\n"
]
}
],
"source": [
"a = np.array([2,3,4])\n",
"print(a, a.dtype)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- _array_ transforms sequences of sequences into two-dimensional arrays, sequences of sequences of sequences into three-dimensional arrays"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1.2 3.5 5.1]\n",
" [4.1 6.1 0.5]] float64\n"
]
}
],
"source": [
"b = np.array([(1.2, 3.5, 5.1),(4.1,6.1,0.5)])\n",
"print(b, b.dtype)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1.2, 3.5, 5.1])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[0]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([4.1, 6.1, 0.5])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[1]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.2"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[0][0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- The type of the array can also be explicitly specified at creation time"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1.+0.j, 2.+0.j],\n",
" [3.+0.j, 4.+0.j]])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = np.array( [ [1,2], [3,4] ], dtype=complex )\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- The function _zeros_ creates an array full of zeros, \n",
"- the function _ones_ creates an array full of ones, and \n",
"- the function _empty_ creates an array whose initial content is random and depends on the state of the memory."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Zeros: [[0. 0. 0. 0.]\n",
" [0. 0. 0. 0.]\n",
" [0. 0. 0. 0.]]\n",
"Ones [[1. 1. 1. 1.]\n",
" [1. 1. 1. 1.]]\n",
"Empty [[1.2 3.5 5.1]\n",
" [4.1 6.1 0.5]]\n"
]
}
],
"source": [
"print('Zeros: ',np.zeros( (3,4) ))\n",
"print('Ones', np.ones( (2,4), dtype=np.float64 ))\n",
"print('Empty', np.empty( (2,3) ))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- The _reshape_ function can be used to convert an array into a matrix"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0, 1, 2, 3, 4],\n",
" [ 5, 6, 7, 8, 9],\n",
" [10, 11, 12, 13, 14]])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.arange(15).reshape(3, 5)\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"array dimensions: (3, 5)\n",
"number of dimensions: 2\n",
"element types: int32\n",
"size of elements: 4\n",
"total number of elements: 15\n",
"type of object: \n"
]
}
],
"source": [
"print(\"array dimensions: \", a.shape)\n",
"print(\"number of dimensions: \", a.ndim)\n",
"print(\"element types: \", a.dtype.name)\n",
"print(\"size of elements: \", a.itemsize)\n",
"print(\"total number of elements: \",a.size)\n",
"print(\"type of object:\",type(a))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matplotlib\n",
"\n",
"- Most popular python plotting library\n",
"- low-level library with a Matlab like interface\n",
"- offers lots of freedom\n",
"- need to write more code"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"## Installing Matplotlib\n",
"\n",
"- python -m pip install -U pip\n",
"- pip install matplotlib\n",
"- conda install matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Pyplot\n",
"\n",
"- matplotlib.pyplot is a collection of command style functions that make matplotlib work like MATLAB\n",
"- creates a figure, creates a plotting area in a figure, plots some lines in a plotting area, decorates the plot with labels, etc\n",
"- supports a very wide variety of graphs and plots namely - histogram, bar charts, power spectra, error charts etc"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Importing Matplotlib\n",
"\n",
"- import matplotlib.pyplot as plt\n",
"- from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Plotting a Line Chart\n",
"\n",
"- Line chart/Line graph displays information as a series of data points called 'markers'\n",
"- 'Markers' are connected by staright line segments\n",
"- Use the **plot** method - plt.plot(x, y) "
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"