{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Libraries for data analysis and plots\n", "\n", "**NumPy**: for numerical data, NumPy arrays are the more efficient way of storing and manipulating data, ndarray\n", "\n", "**matplotlib**: most popular Python library for producing plots\n", "\n", "**SciPy**: a collection of packages addressing a number of different standard problem domains in scientific computing.\n", "\n", "**pandas**: flexible data manipulation capabilities of spreadsheets and relational databases, dataFrame\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## NumPy\n", "\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", "\n", "Besides its obvious scientific uses, **NumPy** can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows **NumPy** to seamlessly and speedily integrate with a wide variety of databases.\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3] [4 5 6]\n" ] } ], "source": [ "import numpy as np \n", "#generation of an array\n", "#vectors\n", "vector1 = np.array([1,2,3])\n", "vector2 = np.array([4,5,6])\n", "print(vector1,vector2)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. 2. 3.]\n", " [ 1. 4. 5.]\n", " [ 5. 6. 7.]]\n" ] } ], "source": [ "#matrix\n", "matrix=np.array([[1,2,3.0],[1,4,5],[5,6,7]])\n", "print(matrix)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The elements of an array are all of the same type" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Arrays enable you to perform mathematical operations on whole blocks of data using similar syntax to the equivalent operations between scalar elements" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix.ndim " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3, 3)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix.shape # a tuple indicating the size of each dimension" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('float64')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix.dtype # an object describing the data type of the array" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are a number of other functions for **creating** new arrays." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 0., 0.],\n", " [ 0., 0., 0.],\n", " [ 0., 0., 0.]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.zeros((3,3))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1., 1., 1.],\n", " [ 1., 1., 1.],\n", " [ 1., 1., 1.]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.ones((3,3))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1., 0., 0.],\n", " [ 0., 1., 0.],\n", " [ 0., 0., 1.]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ident = np.identity(3)\n", "ident" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.arange(15) # an array-valued version of the built-in Python range function" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1., 2., 3.])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array([1, 2, 3], dtype=np.float) # you can specify the datatype" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([b'1.25', b'-9.6', b'42'], \n", " dtype='|S4')" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)\n", "numeric_strings" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1.25, -9.6 , 42. ])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numeric_strings.astype(float)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Operations between Arrays and Scalars" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1, 2, 3]), array([4, 5, 6]))" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vector1, vector2" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[5 7 9]\n" ] } ], "source": [ "# somma tra vettori\n", "print(vector1+vector2)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 4 10 18]\n" ] } ], "source": [ "# prodotto tra vettori/matrici (elemento per elemento!!)\n", "print(vector1*vector2)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "32\n" ] } ], "source": [ "#prodotto scalare\n", "print(vector1.dot(vector2))" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. 1. 5.]\n", " [ 2. 4. 6.]\n", " [ 3. 5. 7.]]\n" ] } ], "source": [ "#trasposta di una matrice\n", "print(matrix.T)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.25, -0.5 , 0.25],\n", " [-2.25, 1. , 0.25],\n", " [ 1.75, -0.5 , -0.25]])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#inversa di una matrice\n", "from numpy.linalg import inv\n", "inv(matrix)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1.00000000e+00, 2.22044605e-16, 5.55111512e-17],\n", " [ 0.00000000e+00, 1.00000000e+00, -1.11022302e-16],\n", " [ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00]])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# prodotto matrici\n", "matrix.dot(inv(matrix))" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 0, 0],\n", " [0, 1, 0],\n", " [0, 0, 1]])" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix.dot(inv(matrix)).astype(int)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Basic Indexing and Slicing (creating sub-arrays)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = np.arange(10)\n", "arr" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([5, 6, 7])" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr[5:8]" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr[5:8] = 12\n", "arr" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "subArray = arr[5:8]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 12, 666, 12])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subArray[1]= 666\n", "subArray " ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 1, 2, 3, 4, 12, 666, 12, 8, 9])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr # Important distinction from lists: subarrays are views on the original array" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[5, 666, 7]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lista = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", "sublist = lista[5:8]\n", "sublist[1]= 666\n", "sublist" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lista" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 2, 3],\n", " [1, 4, 5],\n", " [5, 6, 7]])" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.0" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix[0][2]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.0" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix[0, 2]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 4., 5.],\n", " [ 6., 7.]])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix[1:,1:]" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.76272564, 0.7954443 , 0.69589486, 0.10098095],\n", " [ 0.5480459 , 0.06034182, 0.72958103, 0.2511865 ],\n", " [-0.59294382, -0.74146416, 0.76937381, 0.07666637],\n", " [-0.42471613, -1.39515152, -0.03012301, 0.11994199],\n", " [-0.45952758, 0.1234292 , -0.69791327, -0.96443499],\n", " [ 0.27059413, -1.01364169, 0.23803428, -1.01708924],\n", " [ 0.98327203, -0.44501003, -1.11012779, 0.14849479]])" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = arr = np.random.randn(7, 4) # generation of some random normally distributed data\n", "data" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ True, False, False, True, False, False, False], dtype=bool)" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])\n", "bollArr = names == 'Bob'\n", "bollArr" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.76272564, 0.7954443 , 0.69589486, 0.10098095],\n", " [-0.42471613, -1.39515152, -0.03012301, 0.11994199]])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[bollArr]" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0. , 0.7954443 , 0.69589486, 0.10098095],\n", " [ 0.5480459 , 0.06034182, 0.72958103, 0.2511865 ],\n", " [ 0. , 0. , 0.76937381, 0.07666637],\n", " [ 0. , 0. , 0. , 0.11994199],\n", " [ 0. , 0.1234292 , 0. , 0. ],\n", " [ 0.27059413, 0. , 0.23803428, 0. ],\n", " [ 0.98327203, 0. , 0. , 0.14849479]])" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data<0]=0\n", "data" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sin(0)= 0.0\n", "cos(0)= 6.12323399574e-17\n", "Pi greco= 3.141592653589793\n", "Nepero's number = 2.718281828459045\n" ] } ], "source": [ "#funzioni\n", "print('sin(0)=',np.sin(0))\n", "print('cos(0)=',np.cos(np.pi/2))\n", "#costanti\n", "print('Pi greco=',np.pi)\n", "print(\"Nepero's number =\",np.e)\n" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ -1.00000000e+00, -9.00000000e-01, -8.00000000e-01,\n", " -7.00000000e-01, -6.00000000e-01, -5.00000000e-01,\n", " -4.00000000e-01, -3.00000000e-01, -2.00000000e-01,\n", " -1.00000000e-01, -2.22044605e-16, 1.00000000e-01,\n", " 2.00000000e-01, 3.00000000e-01, 4.00000000e-01,\n", " 5.00000000e-01, 6.00000000e-01, 7.00000000e-01,\n", " 8.00000000e-01, 9.00000000e-01])" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#array equispaziati\n", "np.arange(-1, 1, 0.1) # 20 equally spaced points with step 0.1" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([-1. , -0.89473684, -0.78947368, -0.68421053, -0.57894737,\n", " -0.47368421, -0.36842105, -0.26315789, -0.15789474, -0.05263158,\n", " 0.05263158, 0.15789474, 0.26315789, 0.36842105, 0.47368421,\n", " 0.57894737, 0.68421053, 0.78947368, 0.89473684, 1. ])" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linspace(-1,1,20) # here wix fix the number of interval, not the step\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Mathematical and Statistical Methods" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.32405277, 1.05552548, 2.40570979, 1.40748301, -1.46633919])" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr = np.random.randn(5) # normally-distributed data\n", "arr" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.287758987649 1.43879493824\n" ] } ], "source": [ "print( arr.mean(),arr.sum())" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.2877589876489331" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ " np.mean(arr)" ] }, { "cell_type": "code", "execution_count": 217, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.2485150507560063" ] }, "execution_count": 217, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(arr)" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-1.69586742, 0.22304061, 0.22611136, 1.15068924, 1.53482114])" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "arr.sort()\n", "arr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Example: Random Walks" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import random \n", "import matplotlib.pyplot as plt\n", "position = 0\n", "walk = [position] \n", "steps = 1000\n", "for i in range(steps):\n", " step = 1 if random.randint(0, 1) else -1 \n", " position += step\n", " walk.append(position)\n", "plt.plot(walk)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matplotlib\n", "It is a (primarily 2D) desktop plotting package designed for creating publication-quality plots. The project was started by John Hunter in 2002 to enable a MATLAB-like plotting interface in Python. " ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nUtT/BxA+8FMZRCBuAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.plot(np.arange(10))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.linspace(0,1,10), np.arange(10), 'r--')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ngoIxxph6/x9faN+L7myo/QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "ax1 = fig.add_subplot(2,1, 1) \n", "ax2 = fig.add_subplot(2,1, 2)\n", "\n", "ax1.plot(np.random.randn(30).cumsum(), 'ro--',label='first')\n", "ax2.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30),label='second')\n", "\n", "ax1.set_title('My first matplotlib plot')\n", "ax1.set_ylabel('Steps')\n", "\n", "# legend\n", "ax1.legend(loc='best')\n", "ax2.legend(loc='best')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }