{ "metadata": { "name": "", "signature": "sha256:dc7b99f8324c3719a43e321c2505db1bc3e8bf6b3fb804eae62b3665dac5c75b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# The Analytic Edge Lecture code in Python\n", "## With pandas, numpy\n", "\n", "# VIDEO 2\n", "## Basic Calculations" ] }, { "cell_type": "code", "collapsed": false, "input": [ "8*6" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "48" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python use ** for power" ] }, { "cell_type": "code", "collapsed": false, "input": [ "2**16" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "65536" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "type '\\' and line break will allow you to continuetyping in code in new line" ] }, { "cell_type": "code", "collapsed": false, "input": [ "2**\\\n", "6" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "64" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Functions\n", "You can take square root without using a function..." ] }, { "cell_type": "code", "collapsed": false, "input": [ "2**0.5" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "1.4142135623730951" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also use libraies like math, numpy or scipy for sqrt function" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from numpy import sqrt\n", "sqrt(2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "1.4142135623730951" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The absoluate value function" ] }, { "cell_type": "code", "collapsed": false, "input": [ "abs(-65)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "65" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "to see help on function or object in python: " ] }, { "cell_type": "code", "collapsed": false, "input": [ "help(sqrt)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Help on ufunc object:\n", "\n", "sqrt = class ufunc(__builtin__.object)\n", " | Functions that operate element by element on whole arrays.\n", " | \n", " | To see the documentation for a specific ufunc, use np.info(). For\n", " | example, np.info(np.sin). Because ufuncs are written in C\n", " | (for speed) and linked into Python with NumPy's ufunc facility,\n", " | Python's help() function finds this page whenever help() is called\n", " | on a ufunc.\n", " | \n", " | A detailed explanation of ufuncs can be found in the \"ufuncs.rst\"\n", " | file in the NumPy reference guide.\n", " | \n", " | Unary ufuncs:\n", " | =============\n", " | \n", " | op(X, out=None)\n", " | Apply op to X elementwise\n", " | \n", " | Parameters\n", " | ----------\n", " | X : array_like\n", " | Input array.\n", " | out : array_like\n", " | An array to store the output. Must be the same shape as `X`.\n", " | \n", " | Returns\n", " | -------\n", " | r : array_like\n", " | `r` will have the same shape as `X`; if out is provided, `r`\n", " | will be equal to out.\n", " | \n", " | Binary ufuncs:\n", " | ==============\n", " | \n", " | op(X, Y, out=None)\n", " | Apply `op` to `X` and `Y` elementwise. May \"broadcast\" to make\n", " | the shapes of `X` and `Y` congruent.\n", " | \n", " | The broadcasting rules are:\n", " | \n", " | * Dimensions of length 1 may be prepended to either array.\n", " | * Arrays may be repeated along dimensions of length 1.\n", " | \n", " | Parameters\n", " | ----------\n", " | X : array_like\n", " | First input array.\n", " | Y : array_like\n", " | Second input array.\n", " | out : array_like\n", " | An array to store the output. Must be the same shape as the\n", " | output would have.\n", " | \n", " | Returns\n", " | -------\n", " | r : array_like\n", " | The return value; if out is provided, `r` will be equal to out.\n", " | \n", " | Methods defined here:\n", " | \n", " | __call__(...)\n", " | x.__call__(...) <==> x(...)\n", " | \n", " | __repr__(...)\n", " | x.__repr__() <==> repr(x)\n", " | \n", " | __str__(...)\n", " | x.__str__() <==> str(x)\n", " | \n", " | accumulate(...)\n", " | accumulate(array, axis=0, dtype=None, out=None)\n", " | \n", " | Accumulate the result of applying the operator to all elements.\n", " | \n", " | For a one-dimensional array, accumulate produces results equivalent to::\n", " | \n", " | r = np.empty(len(A))\n", " | t = op.identity # op = the ufunc being applied to A's elements\n", " | for i in range(len(A)):\n", " | t = op(t, A[i])\n", " | r[i] = t\n", " | return r\n", " | \n", " | For example, add.accumulate() is equivalent to np.cumsum().\n", " | \n", " | For a multi-dimensional array, accumulate is applied along only one\n", " | axis (axis zero by default; see Examples below) so repeated use is\n", " | necessary if one wants to accumulate over multiple axes.\n", " | \n", " | Parameters\n", " | ----------\n", " | array : array_like\n", " | The array to act on.\n", " | axis : int, optional\n", " | The axis along which to apply the accumulation; default is zero.\n", " | dtype : data-type code, optional\n", " | The data-type used to represent the intermediate results. Defaults\n", " | to the data-type of the output array if such is provided, or the\n", " | the data-type of the input array if no output array is provided.\n", " | out : ndarray, optional\n", " | A location into which the result is stored. If not provided a\n", " | freshly-allocated array is returned.\n", " | \n", " | Returns\n", " | -------\n", " | r : ndarray\n", " | The accumulated values. If `out` was supplied, `r` is a reference to\n", " | `out`.\n", " | \n", " | Examples\n", " | --------\n", " | 1-D array examples:\n", " | \n", " | >>> np.add.accumulate([2, 3, 5])\n", " | array([ 2, 5, 10])\n", " | >>> np.multiply.accumulate([2, 3, 5])\n", " | array([ 2, 6, 30])\n", " | \n", " | 2-D array examples:\n", " | \n", " | >>> I = np.eye(2)\n", " | >>> I\n", " | array([[ 1., 0.],\n", " | [ 0., 1.]])\n", " | \n", " | Accumulate along axis 0 (rows), down columns:\n", " | \n", " | >>> np.add.accumulate(I, 0)\n", " | array([[ 1., 0.],\n", " | [ 1., 1.]])\n", " | >>> np.add.accumulate(I) # no axis specified = axis zero\n", " | array([[ 1., 0.],\n", " | [ 1., 1.]])\n", " | \n", " | Accumulate along axis 1 (columns), through rows:\n", " | \n", " | >>> np.add.accumulate(I, 1)\n", " | array([[ 1., 1.],\n", " | [ 0., 1.]])\n", " | \n", " | at(...)\n", " | at(a, indices, b=None)\n", " | \n", " | Performs unbuffered in place operation on operand 'a' for elements\n", " | specified by 'indices'. For addition ufunc, this method is equivalent to\n", " | `a[indices] += b`, except that results are accumulated for elements that\n", " | are indexed more than once. For example, `a[[0,0]] += 1` will only\n", " | increment the first element once because of buffering, whereas\n", " | `add.at(a, [0,0], 1)` will increment the first element twice.\n", " | \n", " | .. versionadded:: 1.8.0\n", " | \n", " | Parameters\n", " | ----------\n", " | a : array_like\n", " | The array to perform in place operation on.\n", " | indices : array_like or tuple\n", " | Array like index object or slice object for indexing into first\n", " | operand. If first operand has multiple dimensions, indices can be a\n", " | tuple of array like index objects or slice objects.\n", " | b : array_like\n", " | Second operand for ufuncs requiring two operands. Operand must be\n", " | broadcastable over first operand after indexing or slicing.\n", " | \n", " | Examples\n", " | --------\n", " | Set items 0 and 1 to their negative values:\n", " | \n", " | >>> a = np.array([1, 2, 3, 4])\n", " | >>> np.negative.at(a, [0, 1])\n", " | >>> print(a)\n", " | array([-1, -2, 3, 4])\n", " | \n", " | ::\n", " | \n", " | Increment items 0 and 1, and increment item 2 twice:\n", " | \n", " | >>> a = np.array([1, 2, 3, 4])\n", " | >>> np.add.at(a, [0, 1, 2, 2], 1)\n", " | >>> print(a)\n", " | array([2, 3, 5, 4])\n", " | \n", " | ::\n", " | \n", " | Add items 0 and 1 in first array to second array,\n", " | and store results in first array:\n", " | \n", " | >>> a = np.array([1, 2, 3, 4])\n", " | >>> b = np.array([1, 2])\n", " | >>> np.add.at(a, [0, 1], b)\n", " | >>> print(a)\n", " | array([2, 4, 3, 4])\n", " | \n", " | outer(...)\n", " | outer(A, B)\n", " | \n", " | Apply the ufunc `op` to all pairs (a, b) with a in `A` and b in `B`.\n", " | \n", " | Let ``M = A.ndim``, ``N = B.ndim``. Then the result, `C`, of\n", " | ``op.outer(A, B)`` is an array of dimension M + N such that:\n", " | \n", " | .. math:: C[i_0, ..., i_{M-1}, j_0, ..., j_{N-1}] =\n", " | op(A[i_0, ..., i_{M-1}], B[j_0, ..., j_{N-1}])\n", " | \n", " | For `A` and `B` one-dimensional, this is equivalent to::\n", " | \n", " | r = empty(len(A),len(B))\n", " | for i in range(len(A)):\n", " | for j in range(len(B)):\n", " | r[i,j] = op(A[i], B[j]) # op = ufunc in question\n", " | \n", " | Parameters\n", " | ----------\n", " | A : array_like\n", " | First array\n", " | B : array_like\n", " | Second array\n", " | \n", " | Returns\n", " | -------\n", " | r : ndarray\n", " | Output array\n", " | \n", " | See Also\n", " | --------\n", " | numpy.outer\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.multiply.outer([1, 2, 3], [4, 5, 6])\n", " | array([[ 4, 5, 6],\n", " | [ 8, 10, 12],\n", " | [12, 15, 18]])\n", " | \n", " | A multi-dimensional example:\n", " | \n", " | >>> A = np.array([[1, 2, 3], [4, 5, 6]])\n", " | >>> A.shape\n", " | (2, 3)\n", " | >>> B = np.array([[1, 2, 3, 4]])\n", " | >>> B.shape\n", " | (1, 4)\n", " | >>> C = np.multiply.outer(A, B)\n", " | >>> C.shape; C\n", " | (2, 3, 1, 4)\n", " | array([[[[ 1, 2, 3, 4]],\n", " | [[ 2, 4, 6, 8]],\n", " | [[ 3, 6, 9, 12]]],\n", " | [[[ 4, 8, 12, 16]],\n", " | [[ 5, 10, 15, 20]],\n", " | [[ 6, 12, 18, 24]]]])\n", " | \n", " | reduce(...)\n", " | reduce(a, axis=0, dtype=None, out=None, keepdims=False)\n", " | \n", " | Reduces `a`'s dimension by one, by applying ufunc along one axis.\n", " | \n", " | Let :math:`a.shape = (N_0, ..., N_i, ..., N_{M-1})`. Then\n", " | :math:`ufunc.reduce(a, axis=i)[k_0, ..,k_{i-1}, k_{i+1}, .., k_{M-1}]` =\n", " | the result of iterating `j` over :math:`range(N_i)`, cumulatively applying\n", " | ufunc to each :math:`a[k_0, ..,k_{i-1}, j, k_{i+1}, .., k_{M-1}]`.\n", " | For a one-dimensional array, reduce produces results equivalent to:\n", " | ::\n", " | \n", " | r = op.identity # op = ufunc\n", " | for i in range(len(A)):\n", " | r = op(r, A[i])\n", " | return r\n", " | \n", " | For example, add.reduce() is equivalent to sum().\n", " | \n", " | Parameters\n", " | ----------\n", " | a : array_like\n", " | The array to act on.\n", " | axis : None or int or tuple of ints, optional\n", " | Axis or axes along which a reduction is performed.\n", " | The default (`axis` = 0) is perform a reduction over the first\n", " | dimension of the input array. `axis` may be negative, in\n", " | which case it counts from the last to the first axis.\n", " | \n", " | .. versionadded:: 1.7.0\n", " | \n", " | If this is `None`, a reduction is performed over all the axes.\n", " | If this is a tuple of ints, a reduction is performed on multiple\n", " | axes, instead of a single axis or all the axes as before.\n", " | \n", " | For operations which are either not commutative or not associative,\n", " | doing a reduction over multiple axes is not well-defined. The\n", " | ufuncs do not currently raise an exception in this case, but will\n", " | likely do so in the future.\n", " | dtype : data-type code, optional\n", " | The type used to represent the intermediate results. Defaults\n", " | to the data-type of the output array if this is provided, or\n", " | the data-type of the input array if no output array is provided.\n", " | out : ndarray, optional\n", " | A location into which the result is stored. If not provided, a\n", " | freshly-allocated array is returned.\n", " | keepdims : bool, optional\n", " | If this is set to True, the axes which are reduced are left\n", " | in the result as dimensions with size one. With this option,\n", " | the result will broadcast correctly against the original `arr`.\n", " | \n", " | Returns\n", " | -------\n", " | r : ndarray\n", " | The reduced array. If `out` was supplied, `r` is a reference to it.\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.multiply.reduce([2,3,5])\n", " | 30\n", " | \n", " | A multi-dimensional array example:\n", " | \n", " | >>> X = np.arange(8).reshape((2,2,2))\n", " | >>> X\n", " | array([[[0, 1],\n", " | [2, 3]],\n", " | [[4, 5],\n", " | [6, 7]]])\n", " | >>> np.add.reduce(X, 0)\n", " | array([[ 4, 6],\n", " | [ 8, 10]])\n", " | >>> np.add.reduce(X) # confirm: default axis value is 0\n", " | array([[ 4, 6],\n", " | [ 8, 10]])\n", " | >>> np.add.reduce(X, 1)\n", " | array([[ 2, 4],\n", " | [10, 12]])\n", " | >>> np.add.reduce(X, 2)\n", " | array([[ 1, 5],\n", " | [ 9, 13]])\n", " | \n", " | reduceat(...)\n", " | reduceat(a, indices, axis=0, dtype=None, out=None)\n", " | \n", " | Performs a (local) reduce with specified slices over a single axis.\n", " | \n", " | For i in ``range(len(indices))``, `reduceat` computes\n", " | ``ufunc.reduce(a[indices[i]:indices[i+1]])``, which becomes the i-th\n", " | generalized \"row\" parallel to `axis` in the final result (i.e., in a\n", " | 2-D array, for example, if `axis = 0`, it becomes the i-th row, but if\n", " | `axis = 1`, it becomes the i-th column). There are two exceptions to this:\n", " | \n", " | * when ``i = len(indices) - 1`` (so for the last index),\n", " | ``indices[i+1] = a.shape[axis]``.\n", " | * if ``indices[i] >= indices[i + 1]``, the i-th generalized \"row\" is\n", " | simply ``a[indices[i]]``.\n", " | \n", " | The shape of the output depends on the size of `indices`, and may be\n", " | larger than `a` (this happens if ``len(indices) > a.shape[axis]``).\n", " | \n", " | Parameters\n", " | ----------\n", " | a : array_like\n", " | The array to act on.\n", " | indices : array_like\n", " | Paired indices, comma separated (not colon), specifying slices to\n", " | reduce.\n", " | axis : int, optional\n", " | The axis along which to apply the reduceat.\n", " | dtype : data-type code, optional\n", " | The type used to represent the intermediate results. Defaults\n", " | to the data type of the output array if this is provided, or\n", " | the data type of the input array if no output array is provided.\n", " | out : ndarray, optional\n", " | A location into which the result is stored. If not provided a\n", " | freshly-allocated array is returned.\n", " | \n", " | Returns\n", " | -------\n", " | r : ndarray\n", " | The reduced values. If `out` was supplied, `r` is a reference to\n", " | `out`.\n", " | \n", " | Notes\n", " | -----\n", " | A descriptive example:\n", " | \n", " | If `a` is 1-D, the function `ufunc.accumulate(a)` is the same as\n", " | ``ufunc.reduceat(a, indices)[::2]`` where `indices` is\n", " | ``range(len(array) - 1)`` with a zero placed\n", " | in every other element:\n", " | ``indices = zeros(2 * len(a) - 1)``, ``indices[1::2] = range(1, len(a))``.\n", " | \n", " | Don't be fooled by this attribute's name: `reduceat(a)` is not\n", " | necessarily smaller than `a`.\n", " | \n", " | Examples\n", " | --------\n", " | To take the running sum of four successive values:\n", " | \n", " | >>> np.add.reduceat(np.arange(8),[0,4, 1,5, 2,6, 3,7])[::2]\n", " | array([ 6, 10, 14, 18])\n", " | \n", " | A 2-D example:\n", " | \n", " | >>> x = np.linspace(0, 15, 16).reshape(4,4)\n", " | >>> x\n", " | array([[ 0., 1., 2., 3.],\n", " | [ 4., 5., 6., 7.],\n", " | [ 8., 9., 10., 11.],\n", " | [ 12., 13., 14., 15.]])\n", " | \n", " | ::\n", " | \n", " | # reduce such that the result has the following five rows:\n", " | # [row1 + row2 + row3]\n", " | # [row4]\n", " | # [row2]\n", " | # [row3]\n", " | # [row1 + row2 + row3 + row4]\n", " | \n", " | >>> np.add.reduceat(x, [0, 3, 1, 2, 0])\n", " | array([[ 12., 15., 18., 21.],\n", " | [ 12., 13., 14., 15.],\n", " | [ 4., 5., 6., 7.],\n", " | [ 8., 9., 10., 11.],\n", " | [ 24., 28., 32., 36.]])\n", " | \n", " | ::\n", " | \n", " | # reduce such that result has the following two columns:\n", " | # [col1 * col2 * col3, col4]\n", " | \n", " | >>> np.multiply.reduceat(x, [0, 3], 1)\n", " | array([[ 0., 3.],\n", " | [ 120., 7.],\n", " | [ 720., 11.],\n", " | [ 2184., 15.]])\n", " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors defined here:\n", " | \n", " | identity\n", " | The identity value.\n", " | \n", " | Data attribute containing the identity element for the ufunc, if it has one.\n", " | If it does not, the attribute value is None.\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.add.identity\n", " | 0\n", " | >>> np.multiply.identity\n", " | 1\n", " | >>> np.power.identity\n", " | 1\n", " | >>> print np.exp.identity\n", " | None\n", " | \n", " | nargs\n", " | The number of arguments.\n", " | \n", " | Data attribute containing the number of arguments the ufunc takes, including\n", " | optional ones.\n", " | \n", " | Notes\n", " | -----\n", " | Typically this value will be one more than what you might expect because all\n", " | ufuncs take the optional \"out\" argument.\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.add.nargs\n", " | 3\n", " | >>> np.multiply.nargs\n", " | 3\n", " | >>> np.power.nargs\n", " | 3\n", " | >>> np.exp.nargs\n", " | 2\n", " | \n", " | nin\n", " | The number of inputs.\n", " | \n", " | Data attribute containing the number of arguments the ufunc treats as input.\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.add.nin\n", " | 2\n", " | >>> np.multiply.nin\n", " | 2\n", " | >>> np.power.nin\n", " | 2\n", " | >>> np.exp.nin\n", " | 1\n", " | \n", " | nout\n", " | The number of outputs.\n", " | \n", " | Data attribute containing the number of arguments the ufunc treats as output.\n", " | \n", " | Notes\n", " | -----\n", " | Since all ufuncs can take output arguments, this will always be (at least) 1.\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.add.nout\n", " | 1\n", " | >>> np.multiply.nout\n", " | 1\n", " | >>> np.power.nout\n", " | 1\n", " | >>> np.exp.nout\n", " | 1\n", " | \n", " | ntypes\n", " | The number of types.\n", " | \n", " | The number of numerical NumPy types - of which there are 18 total - on which\n", " | the ufunc can operate.\n", " | \n", " | See Also\n", " | --------\n", " | numpy.ufunc.types\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.add.ntypes\n", " | 18\n", " | >>> np.multiply.ntypes\n", " | 18\n", " | >>> np.power.ntypes\n", " | 17\n", " | >>> np.exp.ntypes\n", " | 7\n", " | >>> np.remainder.ntypes\n", " | 14\n", " | \n", " | signature\n", " | \n", " | types\n", " | Returns a list with types grouped input->output.\n", " | \n", " | Data attribute listing the data-type \"Domain-Range\" groupings the ufunc can\n", " | deliver. The data-types are given using the character codes.\n", " | \n", " | See Also\n", " | --------\n", " | numpy.ufunc.ntypes\n", " | \n", " | Examples\n", " | --------\n", " | >>> np.add.types\n", " | ['??->?', 'bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l',\n", " | 'LL->L', 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D',\n", " | 'GG->G', 'OO->O']\n", " | \n", " | >>> np.multiply.types\n", " | ['??->?', 'bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l',\n", " | 'LL->L', 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D',\n", " | 'GG->G', 'OO->O']\n", " | \n", " | >>> np.power.types\n", " | ['bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l', 'LL->L',\n", " | 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D', 'GG->G',\n", " | 'OO->O']\n", " | \n", " | >>> np.exp.types\n", " | ['f->f', 'd->d', 'g->g', 'F->F', 'D->D', 'G->G', 'O->O']\n", " | \n", " | >>> np.remainder.types\n", " | ['bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l', 'LL->L',\n", " | 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'OO->O']\n", "\n" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Variables\n", "Store the values in variables using assignment '=' , '<-' will not work in Python" ] }, { "cell_type": "code", "collapsed": false, "input": [ "SquareRoot2 = sqrt(2)\n", "SquareRoot2" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "1.4142135623730951" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "HoursYear = 365*24\n", "HoursYear" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "8760" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "see names in current scope \n", "You will see a much shorter list if you are using the basic python prompt \n", "You can use 'name' in dir() to test if a object by that name existed in the scope or not" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dir()[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "['ALLOW_THREADS', 'Annotation', 'Arrow', 'Artist', 'AutoLocator']" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "'HoursYear' in dir()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "True" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarily you can use locals().keys()" ] }, { "cell_type": "code", "collapsed": false, "input": [ "locals().keys()[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "['disp', 'union1d', 'all', 'dist', 'issubsctype']" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "'HoursYear' in locals().keys()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "True" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# VIDEO 3 \n", "\n", "## Vectors\n", "use numpy array to store a vector" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "np.array([2,3,5,8,13])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "array([ 2, 3, 5, 8, 13])" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "Country = np.array([\"Brazil\", \"China\", \"India\",\"Switzerland\",\"USA\"])\n", "LifeExpectancy = np.array([74,76,65,83,79])\n", "Country" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "array(['Brazil', 'China', 'India', 'Switzerland', 'USA'], \n", " dtype='|S11')" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "use print to see the output in a nicer way" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print Country" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['Brazil' 'China' 'India' 'Switzerland' 'USA']\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "print LifeExpectancy" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[74 76 65 83 79]\n" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Getting the element from numpy arrary using index ( starts from 0 rahter than 1 in R)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Country[0]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "'Brazil'" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "LifeExpectancy[2]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ "65" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a array of fixed step integers using arange(), notice the end point is excluded, so you need +1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Sequence = np.arange(0,100+1,2)\n", "Sequence" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,\n", " 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50,\n", " 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,\n", " 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100])" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Frames\n", "a DataFrame is a table-like data structure \n", "there are many ways to create a dataframe, I prefer to pass in data as a dictionary. \n", "This way, which vector becomes which column will be very clear " ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pandas import DataFrame\n", "CountryData = DataFrame({'Country':Country, 'LifeExpectancy':LifeExpectancy})\n", "print CountryData" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Country LifeExpectancy\n", "0 Brazil 74\n", "1 China 76\n", "2 India 65\n", "3 Switzerland 83\n", "4 USA 79\n" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use dataframeName['columnName'] to access column in the dataframe \n", "Add a new column named 'Population'" ] }, { "cell_type": "code", "collapsed": false, "input": [ "CountryData['Population'] = np.array([199000,1390000,1240000,7997,318000])\n", "print CountryData" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Country LifeExpectancy Population\n", "0 Brazil 74 199000\n", "1 China 76 1390000\n", "2 India 65 1240000\n", "3 Switzerland 83 7997\n", "4 USA 79 318000\n" ] } ], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example of creating a new 'shorter' dateframe and append to the above one by row " ] }, { "cell_type": "code", "collapsed": false, "input": [ "Country = np.array(['Australia','Greece'])\n", "LifeExpectancy = np.array([82, 81])\n", "Population = np.array([23050, 11125])\n", "\n", "NewCountryData = DataFrame({'Country':Country, 'LifeExpectancy':LifeExpectancy,\n", " 'Population':Population})\n", "\n", "print NewCountryData" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Country LifeExpectancy Population\n", "0 Australia 82 23050\n", "1 Greece 81 11125\n" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "AllCountryData = CountryData.append(NewCountryData)\n", "print AllCountryData" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Country LifeExpectancy Population\n", "0 Brazil 74 199000\n", "1 China 76 1390000\n", "2 India 65 1240000\n", "3 Switzerland 83 7997\n", "4 USA 79 318000\n", "0 Australia 82 23050\n", "1 Greece 81 11125\n" ] } ], "prompt_number": 34 }, { "cell_type": "markdown", "metadata": {}, "source": [ "notice the index is not correctly updated, need a quick fix" ] }, { "cell_type": "code", "collapsed": false, "input": [ "AllCountryData.index = range(len(AllCountryData))\n", "print AllCountryData" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Country LifeExpectancy Population\n", "0 Brazil 74 199000\n", "1 China 76 1390000\n", "2 India 65 1240000\n", "3 Switzerland 83 7997\n", "4 USA 79 318000\n", "5 Australia 82 23050\n", "6 Greece 81 11125\n" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "or we can add a second parameter when calling the \n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print CountryData.append(NewCountryData, True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Country LifeExpectancy Population\n", "0 Brazil 74 199000\n", "1 China 76 1390000\n", "2 India 65 1240000\n", "3 Switzerland 83 7997\n", "4 USA 79 318000\n", "5 Australia 82 23050\n", "6 Greece 81 11125\n" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# VIDEO 4\n", "## change the working directory to where the data file loacted..." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "path = 'C:\\\\Users\\\\iris\\\\documents\\\\github\\\\edX\\\\The Analytic Edge\\\\week1'\n", "os.chdir(path)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading csv files" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "WHO = pd.read_csv(\"WHO.csv\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "see the first 5 rows in the dataframe" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CountryRegionPopulationUnder15Over60FertilityRateLifeExpectancyChildMortalityCellularSubscribersLiteracyRateGNIPrimarySchoolEnrollmentMalePrimarySchoolEnrollmentFemale
0 Afghanistan Eastern Mediterranean 29825 47.42 3.82 5.40 60 98.5 54.26 NaN 1140 NaN NaN
1 Albania Europe 3162 21.33 14.93 1.75 74 16.7 96.39 NaN 8820 NaN NaN
2 Algeria Africa 38482 27.42 7.17 2.83 73 20.0 98.99 NaN 8310 98.2 96.4
3 Andorra Europe 78 15.20 22.86 NaN 82 3.2 75.49 NaN NaN 78.4 79.4
4 Angola Africa 20821 47.58 3.84 6.10 51 163.5 48.38 70.1 5230 93.1 78.2
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ " Country Region Population Under15 Over60 \\\n", "0 Afghanistan Eastern Mediterranean 29825 47.42 3.82 \n", "1 Albania Europe 3162 21.33 14.93 \n", "2 Algeria Africa 38482 27.42 7.17 \n", "3 Andorra Europe 78 15.20 22.86 \n", "4 Angola Africa 20821 47.58 3.84 \n", "\n", " FertilityRate LifeExpectancy ChildMortality CellularSubscribers \\\n", "0 5.40 60 98.5 54.26 \n", "1 1.75 74 16.7 96.39 \n", "2 2.83 73 20.0 98.99 \n", "3 NaN 82 3.2 75.49 \n", "4 6.10 51 163.5 48.38 \n", "\n", " LiteracyRate GNI PrimarySchoolEnrollmentMale \\\n", "0 NaN 1140 NaN \n", "1 NaN 8820 NaN \n", "2 NaN 8310 98.2 \n", "3 NaN NaN 78.4 \n", "4 70.1 5230 93.1 \n", "\n", " PrimarySchoolEnrollmentFemale \n", "0 NaN \n", "1 NaN \n", "2 96.4 \n", "3 79.4 \n", "4 78.2 " ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# to see the structure of the data frame\n", "Can't find a exact equalvalent function to str() in R" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print WHO.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(194, 13)\n" ] } ], "prompt_number": 47 }, { "cell_type": "code", "collapsed": false, "input": [ "print WHO.dtypes" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Country object\n", "Region object\n", "Population int64\n", "Under15 float64\n", "Over60 float64\n", "FertilityRate float64\n", "LifeExpectancy int64\n", "ChildMortality float64\n", "CellularSubscribers float64\n", "LiteracyRate float64\n", "GNI float64\n", "PrimarySchoolEnrollmentMale float64\n", "PrimarySchoolEnrollmentFemale float64\n", "dtype: object\n" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "print WHO.values.T[:,:5]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[['Afghanistan' 'Albania' 'Algeria' 'Andorra' 'Angola']\n", " ['Eastern Mediterranean' 'Europe' 'Africa' 'Europe' 'Africa']\n", " [29825L 3162L 38482L 78L 20821L]\n", " [47.42 21.33 27.42 15.2 47.58]\n", " [3.82 14.93 7.17 22.86 3.84]\n", " [5.4 1.75 2.83 nan 6.1]\n", " [60L 74L 73L 82L 51L]\n", " [98.5 16.7 20.0 3.2 163.5]\n", " [54.26 96.39 98.99 75.49 48.38]\n", " [nan nan nan nan 70.1]\n", " [1140.0 8820.0 8310.0 nan 5230.0]\n", " [nan nan 98.2 78.4 93.1]\n", " [nan nan 96.4 79.4 78.2]]\n" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Print out a summary of variables in the dataframe\n", "The outputed infomation is slightly different" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.describe(include = 'all')" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CountryRegionPopulationUnder15Over60FertilityRateLifeExpectancyChildMortalityCellularSubscribersLiteracyRateGNIPrimarySchoolEnrollmentMalePrimarySchoolEnrollmentFemale
count 194 194 194.000000 194.000000 194.000000 183.000000 194.000000 194.000000 184.000000 103.000000 162.000000 101.000000 101.000000
unique 194 6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
top Russian Federation Europe NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
freq 1 53 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
mean NaN NaN 36359.974227 28.732423 11.163660 2.940656 70.010309 36.148969 93.641522 83.710680 13320.925926 90.850495 89.632673
std NaN NaN 137903.141241 10.534573 7.149331 1.480984 9.259075 37.992935 41.400447 17.530645 15192.988650 11.017147 12.817614
min NaN NaN 1.000000 13.120000 0.810000 1.260000 47.000000 2.200000 2.570000 31.100000 340.000000 37.200000 32.500000
25% NaN NaN 1695.750000 18.717500 5.200000 1.835000 64.000000 8.425000 63.567500 71.600000 2335.000000 87.700000 87.300000
50% NaN NaN 7790.000000 28.650000 8.530000 2.400000 72.500000 18.600000 97.745000 91.800000 7870.000000 94.700000 95.100000
75% NaN NaN 24535.250000 37.752500 16.687500 3.905000 76.000000 55.975000 120.805000 97.850000 17557.500000 98.100000 97.900000
max NaN NaN 1390000.000000 49.990000 31.920000 7.580000 83.000000 181.600000 196.410000 99.800000 86440.000000 100.000000 100.000000
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 54, "text": [ " Country Region Population Under15 Over60 \\\n", "count 194 194 194.000000 194.000000 194.000000 \n", "unique 194 6 NaN NaN NaN \n", "top Russian Federation Europe NaN NaN NaN \n", "freq 1 53 NaN NaN NaN \n", "mean NaN NaN 36359.974227 28.732423 11.163660 \n", "std NaN NaN 137903.141241 10.534573 7.149331 \n", "min NaN NaN 1.000000 13.120000 0.810000 \n", "25% NaN NaN 1695.750000 18.717500 5.200000 \n", "50% NaN NaN 7790.000000 28.650000 8.530000 \n", "75% NaN NaN 24535.250000 37.752500 16.687500 \n", "max NaN NaN 1390000.000000 49.990000 31.920000 \n", "\n", " FertilityRate LifeExpectancy ChildMortality CellularSubscribers \\\n", "count 183.000000 194.000000 194.000000 184.000000 \n", "unique NaN NaN NaN NaN \n", "top NaN NaN NaN NaN \n", "freq NaN NaN NaN NaN \n", "mean 2.940656 70.010309 36.148969 93.641522 \n", "std 1.480984 9.259075 37.992935 41.400447 \n", "min 1.260000 47.000000 2.200000 2.570000 \n", "25% 1.835000 64.000000 8.425000 63.567500 \n", "50% 2.400000 72.500000 18.600000 97.745000 \n", "75% 3.905000 76.000000 55.975000 120.805000 \n", "max 7.580000 83.000000 181.600000 196.410000 \n", "\n", " LiteracyRate GNI PrimarySchoolEnrollmentMale \\\n", "count 103.000000 162.000000 101.000000 \n", "unique NaN NaN NaN \n", "top NaN NaN NaN \n", "freq NaN NaN NaN \n", "mean 83.710680 13320.925926 90.850495 \n", "std 17.530645 15192.988650 11.017147 \n", "min 31.100000 340.000000 37.200000 \n", "25% 71.600000 2335.000000 87.700000 \n", "50% 91.800000 7870.000000 94.700000 \n", "75% 97.850000 17557.500000 98.100000 \n", "max 99.800000 86440.000000 100.000000 \n", "\n", " PrimarySchoolEnrollmentFemale \n", "count 101.000000 \n", "unique NaN \n", "top NaN \n", "freq NaN \n", "mean 89.632673 \n", "std 12.817614 \n", "min 32.500000 \n", "25% 87.300000 \n", "50% 95.100000 \n", "75% 97.900000 \n", "max 100.000000 " ] } ], "prompt_number": 54 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Subsetting" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO_Europe = WHO[WHO.Region == \"Europe\"]\n", "WHO_Europe.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 57, "text": [ "(53, 13)" ] } ], "prompt_number": 57 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Writing csv files" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO_Europe.to_csv(\"WHO_Europe.csv\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Removing variables" ] }, { "cell_type": "code", "collapsed": false, "input": [ "del(WHO_Europe)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 59 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# VIDEO 5\n", "## Basic data analysis " ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO['Under15'].mean()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "28.732422680412363" ] } ], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO['Under15'].std()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 62, "text": [ "10.534573319923823" ] } ], "prompt_number": 62 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO['Under15'].describe()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "count 194.000000\n", "mean 28.732423\n", "std 10.534573\n", "min 13.120000\n", "25% 18.717500\n", "50% 28.650000\n", "75% 37.752500\n", "max 49.990000\n", "Name: Under15, dtype: float64" ] } ], "prompt_number": 63 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO['Under15'].idxmin()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 64, "text": [ "85" ] } ], "prompt_number": 64 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO['Country'][85]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 68, "text": [ "'Japan'" ] } ], "prompt_number": 68 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO['Under15'].idxmax()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 66, "text": [ "123" ] } ], "prompt_number": 66 }, { "cell_type": "markdown", "metadata": {}, "source": [ "equvalent way to setting the value:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.at[123,'Country']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 70, "text": [ "'Niger'" ] } ], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scatterplot" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.plot('GNI', 'FertilityRate', kind = 'scatter')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 79, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEPCAYAAACp/QjLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X94XVWd7/H3N9SEYIEY2gEcGMJUUWCApnWQO9VpZ4Y0\nyGidwuiAwiT4XHnmjopChFILyIVEbDXgoM5wy6OmwqAyIhqde5OWGVKtvyqSMMhPRfAXgkAvit7M\npCXf+8feJznJOUlPkrP3OXudz+t5ztOz9z7n7PVN0v09a6291jJ3R0REJF9dpQsgIiLVR8lBREQK\nKDmIiEgBJQcRESmg5CAiIgWUHEREpECiycHMNprZA2Z2v5ndZmYNSZ5PRETKI7HkYGYtwDuBFe5+\nEnAAcE5S5xMRkfJZlOBn/wbYCxxkZi8CBwG/SPB8IiJSJonVHNx9D9AL/BR4Enje3e9K6nwiIlI+\nSTYrLQPeB7QALwcWm9nbkzqfiIiUT5LNSq8BvuXuzwGY2ZeAPwH+OfcCM9PETiIi8+DuluTnJ3m3\n0sPAaWbWaGYGnA48OP1F7h7s44Mf/GDFy6D4FF8txhdybO7pfKdOss/hPuCzwD3Af8S7tyZ1vmr0\nxBNPVLoIiVJ82RZyfCHHlpYkm5Vw9y3AliTPISIi5acR0gnq7OysdBESpfiyLeT4Qo4tLZZW+1XR\nk5t5Jc8vIpJFZoZnuEO65g0NDVW6CIlSfNkWcnwhx5YWJQcRESmgZqUEDQ4O0tsb3aDV1XUh7e3t\nFS6RiIQgjWYlJYeEDA4Osn59B6OjmwFobNzAnXduU4IQkQVTn0OG9fZuZXS0E+gAoiSRq0WEIvR2\nXcWXXSHHlhYlBxERKaBmpYSoWUlEkqI+h4xTh7SIJEF9DhnX0NDA9u13sH37HUEmhtDbdRVfdoUc\nW1qUHEREpICalUREMkbNSiIiUhFKDgkKvd1T8WVbyPGFHFtalBxERKSA+hxERDJGfQ4iIlIRSg4J\nCr3dU/FlW8jxhRxbWhJNDmb2KjMbznv82swuSvKcIiKycKn1OZhZHfAL4FR3/1m8T30OIiJzFFqf\nw+nAY7nEICIi1SvN5HAOcFuK56u40Ns9FV+2hRxfyLGlJZXkYGb1wJuAf0njfCIisjCLUjrPG4Dv\nu/sz0w90dnbS0tICQFNTE8uXL2fNmjXAZPbP6nZuX7WUR/EpvlqJb82aNVVVnoVuDw0N0dfXBzBx\nvUxaKh3SZvZ54P+4+7Zp+4PvkNaaDiJSbkF0SJvZS4k6o7+U9LmqzZYtW1i/voMdO9axY8c61q/v\nYHBwsNLFKpvcN5tQKb7sCjm2tCTerOTuvwOWJH2eanT77V+LlwntAGB0FHp7t6r2ICJVTyOkE9Tc\nvLTSRUhUftt1iBRfdoUcW1rS6pCuSV1dF7JrVwejo9F2Y+MGurq2zf4mEZEqoJpDghoaGrjzzm20\ntfXT1tbPnXduC6pJKfR2XcWXXSHHlhbVHBLW3t4eVEIQkdqg9RxERDImiFtZRUQke5QcEhR6u6fi\ny7aQ4ws5trQoOaRgcHCQtWvPZu3as4MaBCci4VKfQ8IGBwdZv74jHgwX3c4a2l1LIpKuNPoclBwS\ntnbt2ezYsY7cKGmIbm3dvv2OShZLRDJMHdIZF3q7p+LLtpDjCzm2tGicQ8I0SlpEskjNSinQtN0i\nUk7qcxARkQLqc8i40Ns9FV+2hRxfyLGlRckhQbt379b4BhHJJDUrJaSnp4errrqB8fFXAqtobLxV\n4xtEpCzU55BRg4ODnHnmuYyP3xDv2QCcR1vb4xrfICILpj6HjOrt3RonhmOIBr9tBr5Z0nuzNNVG\n6O26ii+7Qo4tLYkmBzNrMrMvmtlDZvagmZ2W5Pmq1/3Aozz77HOzXvBzU23s2LGOHTvWsX59R9Un\nCBEJU6LNSma2Ddjp7p82s0XAS93913nHg21WmpxP6X7gZuBGAOrrL+XEE49jyZLDC8Y8aKoNESlF\nppuVzOxQ4PXu/mkAd9+XnxhC1t7ePrE8aHPzl4kSQwfQwdjYRxgeflE1AxGpakk2Kx0LPGNmnzGz\ne83sZjM7KMHzVZX29nY+8IH3sHLlKUWOvhyIaha5kdMQjZ5ubNwAbAO2xVNtXJhSiecu9HZdxZdd\nIceWliTnVloErADe7e7fM7OPAZcDV+W/qLOzk5aWFgCamppYvnw5a9asASZ/wVndHhkZ4fTTX8uu\nXRviuZUeAv4JuD2O/iH27Hlm4mfR0NDA1Vdfwl139QNw+umX0NDQMHG80vEUi6+ayqP4FF+o20ND\nQ/T19QFMXC+Tllifg5kdAXzb3Y+Nt18HXO7ub8x7TZB9DtPl5lZ69tnneOCB+xgb+xigtR1EZH4y\nP87BzL4O/Hd3f9TMrgYa3X1D3vGaSA75NAmfiCxUpjukY+8B/tnM7gNOBj6U8PmqSq5aCJPjF3p7\nt9LVdSHbt9+R+cSQH1+IFF92hRxbWhJdz8Hd7wP+OMlzZEFnZyfbtvUDrwJWsWtXh5qTRKSqafqM\nhPX09HDFFVvIjXPQVBoislBpNCtpJbiEXX/9Z5gc55BzE9HtrCIi1UlzKyVo5nbPR6p6/EKpQm/X\nVXzZFXJsaVFySNgll1wAXERuYBtcREfHOvU3iEhVU59DCnp6euLmpShZbNq0qcIlEpEsU59DAAYH\nB9m5815WrjxF4xpEJDPUrJSgLVu2BD0Fd+jtuoovu0KOLS2qOSTo9tu/Fk/bHd2pNDoaLQSk2oOI\nVDvVHBLU3Ly00kVIVG6CsFApvuwKOba0qOaQoK6uC9m583zGxqLt+vpL6eq6pbKFEhEpgWoOCbrv\nvvuAvcCHgSvYu3cf99xzT4VLVT6ht+sqvuwKOba0KDkk6Pbbv8bY2F8ATwPduN/AVVf1BtUpLSJh\n0jiHBK1Y8TqGhx8CrkfrQotIuYQwZXeNWwQcV+lCiIjMmZJDgurqxoFVRDOxRtNn1NVdHMS8ShB+\nu67iy66QY0uLkkOC3vrWN9LYeCtwHnATdXVdXHNNl8Y5iEjVU59DwrQsqIiUW+bXkN7vyWsgOYiI\nlJs6pDNuaGhoYu3otWvPDu4W1tDbdRVfdoUcW1oSTw5m9oSZ/YeZDZvZ7qTPV012794dT7x3LDt2\nPMmZZ76dnp4egKCTxv7UcuwiWZF4s5KZPQ6sdPc9RY4F3ay0du3Z7NhxLHArsBm4H/g0Rx65lOee\n+xVjYx8DoLFxA3feua0m+iMGBwdZv74jnpCwtmIXKZeQmpUSDaK6fZMoMRxBlCRu4Je//ABjY4vi\nfdGFMtdpHbre3q15M9XWVuwiWZJGcnDgLjO7x8zemcL5qsbRRzcBjwI3AdcRJYmO+PFRINsXxdDb\ndRVfdoUcW1r2Oyurmb0K+EfgCHc/0cxOBta5e3eJ51jl7r80s6XADjN72N2/kTvY2dlJS0sLAE1N\nTSxfvnxiut3cLziL24ODg3z2s7cD7wKOBy4BHgKGgDVx9A8Bl9PY2EdX17aqKn8p2yMjI3N+/+mn\nv5ZduzYwOhrFX1+/la6uz1VFPOWIL0vboccX0vbQ0BB9fX0AE9fLpO23z8HMvg5cCtzk7q1mZsAP\n3P3EOZ/M7IPAb929N94Ots8h6m9YR9R0tJWoBvFjojwL0AUspbl5L7fd9smaanPX2A+RhamWNaQP\ncvfvRjkB3N3NbG8pH25mBwEHuPsLZvZSYC3wP+dd2gx59tnniDqgNxA1JwG8F7gZeBF4NfBOVq7s\nr7mLY3t7e83FLJI1pfQ5PGNmr8htmNlfA78s8fMPB75hZiPAd4Gvufv2uRczi/YR1Rjy+xn+gcl8\n/BPq69+X6XmWctXeUCm+7Ao5trSUUnN4N9FV7lVm9iTwOPD2Uj7c3R8Hls+/eNm1ZMnhwGFEtYez\n473HxtvXx9uXVqBkIiL7V0qfw7Hu/riZLQbq3P03uX0LPnnAfQ6Dg4O84Q1vxr0BuDHeexFwErAr\n3tbaDiIyd9UyzuFLAO7+W3f/Tbzvi8kVKQzt7e0sXnw4UWLINSvdSHSHkkYFi0h1mzE5mNnxZnY2\ncKiZnWVmZ8f/dgIHplbCTNtXZN9xwNXANhobN6jPoYopvuwKOba0zNbncBzwJuDQ+N+cF4CaGsw2\nX295yxl8+tMX5e3ZAJxHc/OXWbmyn64uTRshItWplD6HP3H3byVy8oD7HHLa2tq4667vA68CVtHY\neKvmEhKRBamWcQ7DZvZu4ASgkWg6DNz9HUkWLASDg4N8/ev3Ae8gmmPpfwGL2bjxOgAlCBGpWqV0\nSN9CNF7hDKK5H44GfptgmYLx7ndvYGzsI0TzKF0NHMjo6IcZHr6AdevOz/x01aG36yq+7Ao5trSU\nkhxe4e5XEk17sQ04E3htssUKw9NPP5O3tZUoSUR3Lo2NfUSzkYpI1SolOYzF//7azE4CmoClyRUp\nHK94xbHA+4FtwJMVLk355SYIC5Xiy66QY0tLKcnhZjNrBq4A+oEHgS2JlioQ1113JfX1+4hqDD8g\nmpl1G7CN+vpLM30bq4iEbb/Jwd1vdvc97r7T3Y9196XAv6ZQtsxraGigv//ztLUdR2vrKRx55CEs\nWnQZBx98FVdd9d7Md0iH3q6r+LIr5NjSMmtyMLOVZvYWMzsx3j7azLYS3XojJWhvb2f79ju47ror\nef75Ufbt28ILL1xDT8/HM98hLSLhmnGcg5l1E80YNwKcCnwZOItoatGb3P0/F3zyGhjnkDO5vkNH\nvGdyXiWtbyAic1HpcQ5nAa3u/p9xn8PPgBPd/YkkC1RrBgcHWb++I15XGXbt6tAgORGpuNmalf4r\nVztw9z3AD5UY5ia/3bOr60Lq6y9leod0b+/WODFEt7iOjm7OzC2uobfrKr7sCjm2tMxWc/hDM/tq\n3nZL3ra7+7oEyxWovUR3Lj3P3r3/yT333JN6CdSEJSKlmK3PYU381IHpbVvu7jsXfPKa63M4FriV\n3LKhdXUXc/7567jlln7Gx28AoLFxQ2LNStObsJI8l4gkp6J9Du4+FBdiHdHynuNJFqQ2fJPJZUNh\nfBxuuaWL8fF3ADdRV/dDNm26OLGL9dQmLBgdjfYpOYjIdKUMgvsb4EdmtsXMXp10gUIyvc+hru6H\nBa8ZH38lUVPTtxkf72XnzntTK99Chd6uq/iyK+TY0lLKILi3A63Aj4E+M/u2mV1oZgeXcgIzO8DM\nhqf1X9Sc9vZ2rrnmYurqLibXKR09X5VaGbq6LqSxccPE+bO+2JCIJGe/6zlMvNBsCXA+8D6iKTRe\nCdzo7jfu532XACuBg6d3YtdSn0OuI/jZZ58GFrFkyWGsXr2Cnp6Pp9oHoA5pkexLo8+hlMV+3gx0\nEiWDzwJ97v4rMzsIeNDdW2Z571FAH9ADXOLub5p2vCaSw2wdwbpYi8hcpZEccPdZH0RtEH86w7HT\n9/PefyFqkloNfLXIcQ/Z3Xff7e7ubW1nOfQ5ePzo87a2sypbuDLIxRcqxZddIcfm7h5fO/d7/V7I\no5SV4J5296/n7zCzze6+wd3vmulNZvZG4FfuPpx3W2yBzs5OWlpaAGhqamL58uUT0+3mOpWyuj0y\nMjIt2iFgN3An3//+M2zZsoVTTz114vVbtmzh9tu/RnPzUrq6LqShoaGq4pkpvmopj+JTfKFuDw0N\n0dfXBzBxvUxaKc1Kw+7eOm3f/e5+0n7e9yGiPop9wIHAIcAd7v63ea/x/Z0/BJPNSucRVcQ+ChQ2\nL61bdw5jY9ENYfX1D9Pf/3k1M4lIgYr2OZjZ/wD+HlgGPJZ36GDgmx7dxVTaScxWA+/3Gu1zgChB\nvO1t72LPnispNvneihWvY3j4EXKJA95Pa+uruPfeXZUpsIhUrTSSw2y3st4GvIlogZ83xs/fBKyc\nS2LIUxtZIE+uWgjRrawrV54C3E802e3Z8fPIT37yFPnLiMJH433VKz++ECm+7Ao5trTMlhzco4n2\n3gW8APwmfng8S2vJPFooqObnYlq9egVwM7Auftwc74Njjjmq4PXF9omIpGG2ZqV/dfe/NLMnKPKt\n392PXfDJa6hZCfa/psO6deczNvYRAOrrL6W//xb1OYhIgUrPrfSX8b8tSRZAIu3t7fT335I35kGJ\nQUQqZ7aaw4rZ3ujuC54EKPSaw9DQ0MRtaRDerKjT4wuN4suukGODyq8Edz2zdyL/WZnLErz29nbu\nvHNbXu0gu4lBRMJW8txKiZw88JqDiEgSKlpzMLM/d/d/N7OzKd4h/aUkCyYiIpUz262sq+N/3zTD\nQ/Yj9HutFV+2hRxfyLGlZba7lT4YP73G3X+cf8zM/jDRUtWYYjOzarZWEamkUuZWutfdV0zb9313\nX7ngk6vPoegdTJs2vSf1dR5EJDsq3edwPHAC0GRmZwFG1PdwCNFEerJAufmWpq/rfP3112qtZxGp\nqNn6HI4j6ls4NP43N7/SCuCdyRct+2Zq9xwcHGTFijWceebb2bOnseD43r17C/Y9++xz5S7egoXe\nrqv4sivk2NIyW5/DV8zsX4HL3P1DKZYpaNObkaJVVy+dOF5XdzF79xrw/rx3vR94VXqFFJGaV0qf\nw/fc/Y8TOXmN9Dnkdy4/++xzDA9fQP78StFkfC8CjwIXAN8EVgGPx685lra2x9m+/Y5Uyy0i1anS\nI6RzdpnZJ4AvAL8j7nsox/QZtWB6TaGurqvIq16kru4RxsffQTRt9yBwHvmLAnV1bUupxCIis/c5\n5LQCJwLXAL1EV6zeJAsViqGhIXp7t+Z1LncwPt5JXd3FRDWGbdTVXUxr6wGccsoJQG5xvXagg+bm\na2lr66/aO5VCb9dVfNkVcmxp2W/Nwd3XpFCOmnLQQQdSX38txxxzFNdd97mJcQ1RDSN6TWPjrdx2\nW1Rb6O3dSm/vVo13EJHUlNLncATQA/y+u59hZicA/83dP7Xgk9dAn8PUZqWvAv8GvBpYRWPjrVNq\nBdMHvgFBzeIqIuVR0TWk8woxAHwG2OTuJ5vZS4Bhd/+jBZ+8BpIDRBf9jRuvZXj4B8A/xHs3AOfR\n2noPsI+f/OSpuCaxceLiP9viQCJSuyq9hnTOEnf/AtHtNLj7XmBfkoUKRa7ds729nSVLDidKDLk1\nojcD32Rk5F6Ghx9hz54rGR6+gHXrzmdwcLBiZZ6L0Nt1FV92hRxbWkq5W+m3ZnZYbsPMTgN+XcqH\nm9mBwE6gAagHvuLuG+dT0DA9gvsxROMYotrB2NjkaOiurgvZtSu/H0J3LYlIOkppVloJfJzojqUH\ngKXAX7v7fSWdwOwgd/9/ZrYI2AW83913xcdqolkJoKenhyuu2ALcGO+5iObmBvbsaQC6manpSBPw\nich0Fe1zMLM/cPefxs8XEfWiGvCIu4/N+URmBxHVIjrc/cF4X80kh6j/4FjyB7aZfQb3C4hua43G\nNNTXX0p/v9aPFpGZVbrP4St5z7/g7j9w9/vnmhjMrM7MRoCngbtziaEWFLZ7ngTcET9Owv04oqRw\nK3ATBx98FVdd9V56e7eydu3ZVd/3UK523cHBQdauPbvqYg693Trk+EKOLS2l9DkAzHv9BncfB5ab\n2aHAoJmtcfeh3PHOzk5aWloAaGpqYvny5RMLg+d+wVndHhkZmdju6rqQu+/+G/btewg4nmhOpbXA\nENGgt6c4/PCPcs01vYyN3QDAzp3ncu21l3PZZZdVRTyzxTffz9u9ezdXX319fLvuQ+zceS79/dHY\njxDiq+bt0OMLaXtoaIi+vj6Aietl0mZrVhp299bpzxd0MrMrgVF3/2i8XTPNSgArVryO4eEXgZcT\nTW77MfKnyHj1q19dMO9Sc/O13HbbJ4NtZtLtuiJzV+lmpZPN7AUzewE4Kfc8fvymlA83syVm1hQ/\nbwTagOGFFzubottZ/46oWWkT06fIWLLksIL37NmzlPXrOyaaW6q1CUZEAuPuiT2IGtnvBUaA/wAu\nnXbcQ3b33XdP2R4YGPDGxsMd+hz6vLHxcB8YGJjxOBzuMODQ521tZ+33/WmbHt98VFtM+coRXzUL\nOb6QY3N3j6+diV6/SxkEt5DEc7+7r3D35e5+srt/JMnzVbv29nbuvDNqNik2oV7ueHPztcBNRHcx\nTR6fPonf6Ojmidtcq91MNZ79/UxEpEKSzj6zPQi85jBf3d3dDofk1SAO8e7ubm9rOyve9vgR1Sjm\nY2BgwNvazpqokSSpmmsHIllECjWHUu9WkhTt3Hkv0Uqs/fGed7Jz571lGzE9fY2JXbs6Ev3GPrXG\nozWxRbIg0WalWpe7Fa0U0brSr+Oww17Bd77zvXjv5JgIKF8TTLmap+YSXxYpvuwKOba0qOZQBQYH\nB1m37hzGxhaRu7UVLor/PWlKDSGXDHJrPOTvq1aaI0okg5Jut5rtgfocfGBgwJublzkc5dA1pT+h\nuXlZQZ9AOdrvK9EHkGYfh0joSKHPQcmhgrq7u72u7mV5Hc9L4ltXZ+5sLtYpPT2JlHIh7u7u9ubm\nZd7cvMy7u7sTjVNEykvJIeNy91oXu1gPDAx4Xd1hBRd6OM2hz+vrlxa9sBdLDrn3NDYe7t3d3fut\nFZSr5hD6veSKL7tCjs09neSgPoeEzXRnUG/vVsbHX1nw+gMOeIyTT/4M111XfGbW6e33Ud9EK9DP\n6Oh5XH/9Z/Z7Z5DuHhKR/Uo6+8z2IPCag3vxb/q5WkTUx7B0SrNSfX3Tfr/F52oiixcf6dA8ZTzE\nAQccFtckcs1TXQXNTuUcLyEi6UM1h3B1dV3Izp3nMDbWAFwBHAPcytjYU2zceN2s3+Jzx97ylnvi\n9x0RH6nnxRdzdzudB6wGdrBnz43s2DFZa9HdQyKyX0lnn9keBF5zuPvuu2ds3x8YGPBFiw7L+9Y/\nOY+S2cHe2rp6xg7l4nMwrSqoDSxa9Hsz1hDKcfdQ6O26ii+7Qo7NXTWHIOQGrk0u9RkNXFu79mz2\n7etlcqpqgKuBh3F/STx1N+zceT79/bcATHzGs88+N6XPIHJFwbkPOeRg9uyZuVzqYxCRmex3DelE\nT15j6znkK7aOAVwLHAVMXdNh2bKP8eSTv5zo1K6r62J8vHfae68EfgdcD0RNRZs2vYeeno9PvK+x\ncYMmthMJQBrrOajmkKLBwcGJb/+rV69g585LGZtYdPUiovmUvlnwvsce+xkwmQzGx++nru5ixsdz\nr9hAlCB20Nx8LStXnjJRQ3nNa15TUGuZqUxdXRcqcYhIJOl2q9ke1ECfQ06xvofu7m5vbV3tzc3L\nfNmyE7y1dXXRO5Dg1QV9B62tq7y1dXU8VqLLocvr6g7z1tbVJfchzNYfUkp/xFzbdbM2Sjr0duuQ\n4ws5Nvd0+hyUHBKU/wda6u2jAwMDXl/fFN+OmptSYyDudC4ctDYwMOCtraumjLQudVBbsTK1tq4u\neYDcXP4DZnHa7tAvMCHHF3Js7koOQZnL2ILcN+xozqXcewYcTvPm5mUFF9X5jluYaSqOJMZAaGyF\nSPmkkRw0ZXdKuroupLEx1zewLR5bcGHR17a3t7N9+x3cdtsn897zFI2Nj3PbbZ8sW79AsTIdc8wR\nBa/7/vfvq5r1qrWGtkhKks4+sz0IvOZQbA3puba5l/Ke+TTZ5D63tXW1t7aumvj8qc1ap8V9Hl1F\nPzPtZqW0m6ZCb5oIOb6Fxlbt/WNkvVkJOBq4G3gA+AFw0bTjZf6RVZck//NN/+Odyyyrs11ko+SQ\nP6XH0onBedObgdLukE67aSrki6d72PEtJLYs9I+FkByOAJbHzxcDjwDH5x0v84+sNkz/462vXxp/\n2y/tj3m2ab9bW1cXHIOzqqKPYC6d+tX8rc89G2WsVVnoH0sjOSQ6zsHdnwKeip//1sweAl4OPJTk\neUM3fVbVaKzETeTPsvq2t70rHu9Q2tiFPXuWsmPHOurquoocfbIq5l8qZU6oYrPgbtr0nnhd7uoY\ny5H2Gt4i85J09sk9gBbgJ8DivH1lzKXVJ6lqe/Fv96cV2S5tPYepiwx1Tbkttq7uZd7auqrot9tK\nNEvs7xt3sW99k+tmzK2JoBx9RsVUyzfT2dYbyTo1K1V5zSHHzBYDXwTe6+6/zT/W2dlJS0sLAE1N\nTSxfvpw1a9YAk4uEZ3V7ZGQkkc+HfcD7mayA3YzZGO6Xx9ufAm4FGhgd7ZxYqyH3/tx8T5s29fDo\no4/xwgsdQDswBCzilFNOYMmSfvbseYa3vvVyLrvsslTjm227oaGB7dvvmNgeGhqacnzPnmeYNAQ8\nFK+bcQTQw+hoMxs3Xjvx89i9ezd33fVdAE4//bWceuqpRePr6enhyis/jPu7gOPZtauDq6++ZMrr\nS//95Zcvb6sCf5+7d+/m6quvj2sxD7Fz57n0939uyt9Ltfx/Sms7//8HQE/Ptor/PIaGhujr6wOY\nuF4mLunsA7wEGATeV+RYOZNpzZhcC+Ks+NE1ccdRNE6hq+RvpdO/Jc1WU8iCYvHA2Z4/iLCu7mUT\no9MnR5j3eX19U9HZcGdatW+u3/Yn7xBbNaXTv5LfTKulFiNzQwAd0gZ8FrhhhuNl/YGFYKG3rk6/\n28isqaS7l6ZfKKuxKl2q/J9htE534YU9v6kpShzdcfNa4c80uoCetqCLaOFNBMUTUdqUHLIphOTw\nOmAcGAGG48cZecfL/TOrKrO1e860rnSpbZ0zJZFonYiXejQ/02kOXTOuR51vPheJrNwKWVofTeHI\n8JUrX+/u+TW1qbWPuVzUq/EiPNt6I1mXlb/N+UojOSQ6Qtrdd7l7nbsvd/fW+DGQ5DmzIHe3yo4d\n69ixYx3r13dMzI46eRdSdDfL2972rjmNBO7t3cq+fScRTd39beCjjI19ZGLm1Vp03XUbp4wEr6u7\nGFg17VX/NeP7o5HktxKtrncTdXVdnH/+Onp7t2Z+pHaufb2trZ+2tn7dNSWTks4+sz0IvOYwk9nX\nlS78hjv929xs3/bm2wQS6jfInOlNTdP7JZYtO2HWfoDZ3l/qiPSQf76SLrLerLTfkys5TLl4F1/+\ns3B0cmvrqjgBnFVwfHL6i8n28/xmpdn6NEK8pXEmMzXrtbau8ubmZbNOfT7fJqJa+vlKspQcMm6m\nds/9dSgTjDq8AAALoElEQVRHdxyd5pNjD6Ze/PPHIUQJpGvKxWmmi1y5v72G1q5b2GlcvF+hGvsP\n5qPU318Wk1pof5vTKTlk3Fw7pPOPzd5sVHjnzXzXb1jIRW3z5s2Zu2jMpvDns2HG6TlCaCIq5QKa\n1ViVHJQcgjVT8phpgZ5SzDU5zDeBZdV81twIJTHOJJRaUmiUHKTAQi7Kc71VdrbXhnghDTHhLZSS\nQ3VScsi4pKq2C7nYDgwM+LJly/2AA5Z6Xd2hvmzZSXNqV8+dO+oX+VPPH6W9/yaYqetcV2PSyC/T\n5s2bK12cRH9GalbKLiWHjNvfH2ip//HLeYHo7u72aAGfyUn36uoOLvjcYslh8eIj8zrDuxwOyvuc\nQ4qOxJ78nKnrYNfXN817Conpt5VW8uKZpKQvzOqQzi4lh4CV+h+/2OtmuyDu7z9ysTWi4bSCfovC\n22oPcfijvPeW1twwmRymv35+01EUL1c6U36kfZFUk47MRMkhYKX+x5/LFNSlJJypyWEgvkgf5YsX\nH1lw7qlNSLmJ/nLvXV1S+SfLND0ZzC85FB8oeNaMnzHfC/r091WieUXJQWai5JBxs1VtF5Icps8L\nlHtfKXcyTTYrdXn+QDmzphIGfeWahrriz5hsnlq06LAZazS5cRf54zPm26w0l+Qw3wv65Ps2TLwv\nGniY7oW6WpqVsijk2NyVHDJvf+Mc5tOsFF1gi0/JXeoYiI6ODoeXlXyxm96pHE3q1+ewOb4wn+YH\nHtg868C+trZoCdLc1OLz7ZCeS7PSfL95T77v7on3FWuOS+NbfKU7pLMq5NjclRyCN58O6dnm9Sll\n9HROsZlKSx3zcPDBf1Dw3kWLfq/o55Xr2+9MndCz9b8sPDlMvq+1dXUm79rJl8WOZSlOyUGKmumb\nuPvs8y5N/4z5XuwK73g6xJctW170QlyOdvOFNw+V531Zvrhm9ZZUKU7JIeOSrNrOdgFb6JoQpeju\n7vaDD365Nzcv8+7u7hnPW47ksJDPWEiH9MqVr89kIiim2M8wt15FiNSstPBHKmtIS/lNXfsBRkej\nfdu338Gdd26bWL+hq2vm+fnb29vnPXf/pk2bWLVq1cR6t8CM5921q4PR0eg1jY0b6OraNq9zzsd8\nY2xvb6ehoWFKfCI1JensM9uDwGsOScrSbY4LbY5Rk8jC6WcYFlKoOVh0nsowM6/k+bMst5pcVHuI\nvpGHvIpXbqU8iFZmCzXOJOlnGA4zw90t0XMoOSRnaGgo0WaJSv9nTzq+SlN82RVybJBOcki0z8HM\nPg38JfArdz8pyXPVooX0GYiIzCbRmoOZvR74LfDZYskh9JqDiEgS0qg51CX54e7+DeD/JnkOEREp\nv0STQ60bGhqqdBESpfiyLeT4Qo4tLRUf59DZ2UlLSwsATU1NLF++fKIjKfcLzur2yMhIVZVH8Sm+\nWoovpO2hoSH6+voAJq6XSUv8biUzawG+qj4HEZHyyHyfg4iIZFOiycHMPgd8CzjOzH5mZhckeb5q\nk6sWhkrxZVvI8YUcW1oS7XNw93OT/HwREUmGRkiLiGSM+hxERKQilBwSFHq7p+LLtpDjCzm2tCg5\niIhIAfU5iIhkjPocRESkIpQcEhR6u6fiy7aQ4ws5trQoOYiISAH1OYiIZIz6HEREpCKUHBIUerun\n4su2kOMLOba0KDmIiEgB9TmIiGSM+hxERKQilBwSFHq7p+LLtpDjCzm2tCg5iIhIAfU5iIhkjPoc\nRESkIpJeQ/oMM3vYzH5oZhuSPFc1Cr3dU/FlW8jxhRxbWhJLDmZ2APAJ4AzgBOBcMzs+qfNVo5GR\nkUoXIVGKL9tCji/k2NKSZM3hVOBH7v6Eu+8FPg+8OcHzVZ3nn3++0kVIlOLLtpDjCzm2tCSZHH4f\n+Fne9s/jfSIiUuWSTA41fxvSE088UekiJErxZVvI8YUcW1oSu5XVzE4Drnb3M+LtjcC4u2/Oe03N\nJxARkflI+lbWJJPDIuAR4C+AJ4HdwLnu/lAiJxQRkbJZlNQHu/s+M3s3MAgcAHxKiUFEJBsqOkJa\nRESqU1k7pM3sI2b2kJndZ2ZfMrND845tjAfDPWxma/P2rzSz++Nj/5C3v8HMvhDv/46ZHZN3rMPM\nHo0ff1vOGMolKwMAzexoM7vbzB4wsx+Y2UXx/mYz2xH/jLebWVPee8r2u0yLmR1gZsNm9tV4O5j4\nzKzJzL4Y/9970MxeG0p8cVkfiMt1W1yWzMZmZp82s6fN7P68fanEM+frpruX7QG0AXXx8w8DH46f\nnwCMAC8BWoAfMVlr2Q2cGj//38AZ8fO/B/4xfv43wOfj583AY0BT/HgMaCpnHGX4ORwQx9gSxzwC\nHF/pcs1Q1iOA5fHzxUT9RMcDW4DL4v0bkvhdphznJcA/A/3xdjDxAduAd8TPFwGHhhBfXL4fAw3x\n9heAjizHBrweaAXuz9uXeDzM47qZ5A9hPXBr/HwjsCHv2ABwGnAk8FDe/nOAm/Je89q8P/hn4ufn\nAv+U956bgHPS+GOdQ+z/DRjI274cuLzS5Sqx7F8GTgceBg6P9x0BPFzu32WKMR0F3AX8GfDVeF8Q\n8RElgh8X2Z/5+OIL2iPAy+LzfpXoC2imYyO60Ocnh8TjYR7XzSTHObyDKKMBvJxoEFxObkDc9P2/\nYHKg3MQgOnffB/zazA6b5bOqSSYHAJpZC9G3mu8S/bE+HR96Gjg8fl6u32Vz+SOY0Q3ApcB43r5Q\n4jsWeMbMPmNm95rZzWb2UgKIz933AL3AT4nueHze3XcQQGzTJB3PvK6bc04OcdvY/UUeb8p7zSZg\nzN1vm+vnByJzvfxmthi4A3ivu7+Qf8yjrxqZiwnAzN4I/Mrdh4Gi94VnOT6ib4criJoSVgC/I6qp\nTshqfGa2DHgf0TftlwOLzey8/NdkNbaZVFM8c04O7t7m7icVeeQ6+jqBM4G3573tF8DRedtHEWWu\nX8TPp+/PvecP4s9cBBzq7s8V+ayjmZoRq0EWyjjBzF5ClBhucfcvx7ufNrMj4uNHAr+K95frd7kn\ngVCK+RNgnZk9DnwO+HMzu4Vw4vs58HN3/168/UWiZPFUAPG9BviWuz8Xfwv+ElGTbQix5Uv6b3Fe\n181y3610BlH1/c3u/p95h/qBc8ys3syOBV4J7Hb3p4DfxHdXGHA+8JW893TEz/8a+Lf4+XZgbXyH\nxsuI2iAHyxlHGdwDvNLMWsysnqhjqL/CZSoq/rl/CnjQ3T+Wdyj/599B1BeR21+u32Xi3P0D7n60\nux9L1Db77+5+PuHE9xTwMzM7Lt51OvAAUft81uN7GDjNzBrjMp0OPEgYseVL429x7tfNMne0/BD4\nCTAcP/4x79gHiHrbHwba8/avBO6Pj92Yt78BuD3+zO8ALXnHLoj3/xDoSLLzaAE/izcQdab9CNhY\n6fLMUs7XEbXFj+T93s4g6gy8C3g0/sNqyntP2X6XKce6msm7lYKJDzgF+B5wH9G360NDiQ+4jCjZ\n3U90V9ZLshwbUe31SWCMqG/ggrTiYY7XTQ2CExGRAlomVERECig5iIhIASUHEREpoOQgIiIFlBxE\nRKSAkoOIiBRQcpCaZmaHWzQV9GNmdo+ZfcvM/srM1pjZeDz9Ru61XzOzP42fD5nZysqVXCRZSg5S\ns+LRpV8Ghtx9mbu/hmgU9VFE89v8HNiU9xaf9lyDhCRYSg5Sy/4c+C9335rb4e4/dfdPxJv3Ac+b\n2ekVKZ1IBSk5SC07Ebh3hmO5GVw/BFyRTnFEqoeSg9SyKc1CZvYJMxsxs925Y+7+jfjYqgqUT6Ri\nlByklj1ANL01AO7+buAvgKXTXtcDXJliuUQqTslBapa7/ztwoJn9Xd7ulxZ53Q6idXdPTqtsIpWm\n5CC17q+A1Wb2YzP7LtBHNE00TG126mHqAisiQdOU3SIiUkA1BxERKaDkICIiBZQcRESkgJKDiIgU\nUHIQEZECSg4iIlJAyUFERAooOYiISIH/D1yhDDD7LCp7AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 79 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Subsetting" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Outliers = WHO[(WHO.GNI > 10000) & (WHO.FertilityRate > 2.5)]\n", "Outliers.shape[0]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 85, "text": [ "7" ] } ], "prompt_number": 85 }, { "cell_type": "code", "collapsed": false, "input": [ "Outliers[['Country','GNI','FertilityRate']]" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CountryGNIFertilityRate
22 Botswana 14550 2.71
55 Equatorial Guinea 25620 5.04
62 Gabon 13740 4.18
82 Israel 27110 2.92
87 Kazakhstan 11250 2.52
130 Panama 14510 2.52
149 Saudi Arabia 24700 2.76
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 86, "text": [ " Country GNI FertilityRate\n", "22 Botswana 14550 2.71\n", "55 Equatorial Guinea 25620 5.04\n", "62 Gabon 13740 4.18\n", "82 Israel 27110 2.92\n", "87 Kazakhstan 11250 2.52\n", "130 Panama 14510 2.52\n", "149 Saudi Arabia 24700 2.76" ] } ], "prompt_number": 86 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# VIDEO 6\n", "## Histograms" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.plot(y = 'CellularSubscribers', kind = 'hist', legend = False)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 88, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 88 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Boxplot\n", "Using default settings" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.boxplot('LifeExpectancy', by = 'Region')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 89, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n2CwAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 89 }, { "cell_type": "markdown", "metadata": {}, "source": [ "tweaking the params a little bit to get a nicer plot \n", "The code is a bit messy...." ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "WHO.boxplot('LifeExpectancy', by = 'Region', rot = 60)\n", "plt.title(\"Life Expectancy of Countries by Region\")\n", "plt.suptitle(\"\")\n", "plt.ylabel(\"Life Expectancy\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 102, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAFvCAYAAABOy2yvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXmcHGXx/9+fBJCbTZRbZDkEBIQFBUFElkNFBMSfoIgc\nQTm8UFSEoGhAvECOIHzx4DARURAEAZVLzCCKiByLICKirAqEO+EQkKt+f9QzSe+6u5nsbk93T9f7\n9Zrd6Wu6ap6ern6q6qlHZkYQBEEQNJlQtABBEARBuQjDEARBEAwgDEMQBEEwgDAMQRAEwQDCMARB\nEAQDCMMQBEEQDCAMQ8mQtLWkuzLL60rqk/SkpE8UKVsdkbSEpMskzZV0ftHyjAZJd0h66zh/Zr+k\n7cfzM8cbSUdKOqNoOapIGIaCGO6HZWbXmdl6mVWHA9eY2bJmdtpCnmOKpJckPZV5PSlppbHKPxok\n9Ur6dxHnHgO7AysAk83s/UPtIGkdSRdIeiQZkNskfVpSrr8vSTMkHbug/cxsQzP7zTif3tJrTKRr\n4uXMtXm3pIPGQT7M7OtmduB4fFbdCMNQHK3+sFYH7hzDeX5nZstkXsua2YNj+Ly6sTpwt5m9PNRG\nSWsBfwD+CWxoZl3AHsAbgGXaJuXQsi1S5PkXgvub1ybwKeB0SRsULVStMbN4FfAC7gW2G2J9L/Dv\n9P7XwIvAs8CTwNrAK4AT8BvRg8C3gcWHOccU4Lphtq0FPAZskpZXAR4B3pqWG8DX8ZveE8DPgEmZ\n47cArgfmAH3ANpltk4HvA/cDjwMXAUsmPV4Cnkr6rARsDvw+fc4DwKnAopnPehk4GLg77XPaID0O\nxA3nk8CfgU2AzwEXDtrvW8D0Yb6L1yV95wB3ALuk9ccA/wWeTzLvP8SxPwQuW0Bb75pkmwPMAtYb\npN+ameUZwLGZa+E+4DPAQ+n7mZK2HZTk+m+S7ZK0vh/vZf4pfd8T07rt03YBU4F7gEeB85vtCiye\n9Hk0yXojsMII1+/UpNfjwNnAK9K2O4CdM/sumj5z45Gu98y6h4DdFyRv2r4v/lt4FDgq6bpd2nY0\ncE6L7dAPfBa4DZgLnNfUp46vwgWo64sWDENangV8KLN8Mn6T7gKWBi4FvjbMOaYwjGFI2w9IP5Ql\ngCuB4zPbGummtD5+U7+w+SMDVk0/xB3T8g5p+ZVp+RfAj4HlgEWArdP6bYa4CWyKG4cJzO8dfSqz\n/eWk47LAasDDwDvStj2SjG9Iy2sBr8ENztPAcmn9Iulms8kQ38Gi6aYzNe23LW5k1knbpwE/GOE7\nnA3sN8L2dZIs2+M36c8BfwMWyeiXNQzfB76cuRZewG9wE4F3Av/J6DVv38zx/cAtqY2aN+p51xr+\nRH49/iCwKPAd4Edp28Hpu14cvyFvAiwzjF79uPFZFZgE/Jb5Bu1zwHmZfd8N3DbM5/Qy/0FoAn7z\nfg5YqwV518eN4pvTtm/ixrKp6zTmX7MLaod7gRvStTMJvw4PLvo+UdSrcAHq+mLhDMOH03ulizt7\nI9kS+Mcw55iSbixzMq+/DdrnEuB2/Kl/0UHn/Vpm+XX40+kE4AgG3SyBK/Cnt5XxXsFyC9JtGJkP\nBS7KLL8MvDmzfD5weHp/JXDIMJ9zOXBAer8zcMcw+20NzB607kfAtPT+aDJPnUMc/zzw9hG2f3HQ\nTVK4MWv2zIYyDNkewzPAhMz2h4DNB+876LqaMty1lm5422W2rZx0mAjsD/wOeH2L1+9BmeV3Avek\n96vgN+yl0/KFwGHDfE5vul7m4AbhJWCPzPaR5P0ScG5m2xLpGv2fHkML7XAvsFdm+3HAtxf2d90p\nr4gxVANL/5fHn95vljRH0hz8BviqEY69wcwmZV6vHbT9TGAD4FQze2HQtmyg+F/4U9mr8Cf7PZoy\nJDm2wp+2VgMeN7MnWlEsBW5/Lmm2pCeArwKvHLRbNibyDN5TAng18PdhPnomsHd6vzdwzjD7rcJA\nPcFdE6u2ID64O26VEbavjH93AJjfdf69MJ9vA+MbWf2HY6QAfzdwcabd7sTdlSvg39GVwHmS7pd0\n3ALiFIOvj1UAzOwB3MDsLqkL2BE4d4TPecDMJuG9wlOAz0vSAuRdEf9u72t+iJk9i7fHUKzCgtsh\ne509y4K/544lDEO1eBS/YNfP3Oi7zIN2C42kpYHpuHE4RtKkQbu8ZtD7F/A4xL/wJ7GswVnGzI7H\nf2yTJS03xCltiHXfxn/sa5vZcsAXaP26/DcedxmKS4CNJG0IvIvhb0wPAKtlbkTghu++YfYfzK+A\n946w/YH0eQCk86yGx1/Ab/RLZvZfmdazfYbbb6Tj/4W7ALNtt6SZzTazF83sy2a2Ae6e2RnvBQ7H\n4Ovjgcxy0zDvAVxvZrMXqIzZ83hvdLnMeYeT9wHcjffq5vGSluB/Hyqa3M/I7fA/4ixI3k4mDEOx\nLCZp8cxr4jD7CSA9OZ4BTJe0PICkVSW9fZTnPwW40cwOwuMC3xl0zr0lvU7SksCXgQvSk9YPgV0k\nvV3SxCR7r6RV0w3gcjyzpEvSopkc+oeAV0rKGrKlcbfDM5LWAz66AJnV/D5wg3aYpE3lrC3pNTDv\n6fGnuFvoD2Y23I3+BvzmfHiStRe/IZ63ADmaTAPeLOl4SSsCJDnOSXr+BHiXpO0kLYoHOJ/D/ebg\nLrwPpu9xR2Bhxhs8BKy5EPuDt/HXmt+TpOUl7Zre90p6fboOn8IfBF4a5nMEfDxdf5Nxg579zi7G\n40efBH7QqnCp13oiHkAfUV7cRbWLpC0lLYa7jsTQXMDI7TCUfrUlDEOx/BK/KTVf0xg6jTW7fAQe\nLL0huV6uxgNrQ2HAlkOMY3iDpHcDb2f+jfgzwKaSPpA59hw8S2Y2sBj+IyfdZN8NfB4PBv8L/6E1\nr6d98JvKXfjNq3ncXXhQ+h+SHk/jKQ4D9sIDvt/Dby5ZfYf6Lix93oW46+lH6fiL8MBhk5nAhgzv\nRmreiHbBfeSPAKcB+5jZ3YPPN8zx/8DjPN3AnyXNxW9YfwSeTp+zN55t9Qjee9nFzF5MH/GpdP45\n6Xu4eAh9h+MsYP3kZrlohP2ynIIHmK+S9CSeEbZ52rYSfgN9Au/FNRj+uzO8F3YV7s77G/CVeRvN\nnsPbozv9H4nBOp4NrJAMwLDymtmdwCH4NfMAbswexuMMzc9tXit/ZeR2GEqm2vYalAIt+Xy4dCTe\nGC/jAc79gSPxbJhH0m5HmtkVuQkRjApJs3B30dlFyzJaJK2GG6cVzezpouWpG5K+CLzWzEZyR43n\n+ZbGDezaZvbPdpyzU8mtxyCpG88x39TMXo9nEeyJW+GTzGyT9AqjUF4q251Oo44/C/w4jEL7Se6l\nD+G9wDzPs4ukJSUthY/v+VMYhbGTpyvpSdydsGTKbFiS+YGeyt5wakYlu9LpJvEknrM+rWBxaoek\nA3H34uVm9tucT7crfl+5Hx/HsmfO56sFebuSDsIDSc8CV5rZPpKm4S6lJ4CbgM+a2dzchAiCIAgW\nijxdSWvhg5W68RzipSV9EE9PXAPowYOaJ+YlQxAEQbDw5Flk6414/vJjAClr4s1mNi+fXNKZwGVD\nHSypkm6MIAiCqmBmQ7r184wx3AVsIa9nL7yezp0aWPL5PXi20pC0cwj4tGnTCh+GHnqGnqFjPfUs\nQseRyK3HYGa3SfoBHkd4GS/sdQZwpqQePLB5L164KwiCICgJudZrNy+RcPyg1W3JaV5Y+vv7ixah\nLYSenUMddIR66Fk2HWPkc6Knp6doEdpC6Nk51EFHqIeeZdMx13TVsSDJyipbEARB1ZGEFRB8DoIg\nCCpIGIZEo9EoWoS2EHp2DnXQEeqhZ9l0DMMQBEEQDCBiDEEQBDVkpBhDrumqQRCMjYETyy0c8WBV\nLsbSltDe9gxXUqJsPr68CD2rxUgjV2fNmjXqka1VItqy/e0ZhiEIgiAYQMQYgiAIakiMYwiCIAha\nJgxDolP8mAsi9OwcpkxpFC1CW4i2bD+RldSB1CGTpUoZHnkxcybMmFG0FMF4ULa2jBhDzZAgvtbO\nINqycyiiLSPGEARBELRMGIZEHfyYAPvt1yhahLZQNp9tPjSKFqAt1OO32ShagAGEYagZU6YULUF7\nmDmzaAmCoLpEjCHoSKrkf588GebMae85J02Cxx9v7zmD4Tn6aH+1k5FiDLkaBklHAnvjcz7fDuwP\nLAWcD6wO9APvM7O5QxwbhiEYNVUyDMUEHqvz/QT5UEjwWVI3cCCwqZm9HpgI7AlMBa42s3WAa9Jy\n4dTDj1kfPcvms82DurRlHfQsm455xhieBF4AlpS0CLAk8ACwK9D0AM8EdstRhiAIgmAhyduVdBBw\nIvAscKWZ7SNpjplNStsFPN5cHnRsuJJyoAhfZhFUSc9wJQVFUEiMQdJawGXA1sATwAXAT4FTs4ZA\n0uNmNnmI48Mw5EDcEMpHGIagCIqaqOeNwPVm9lgS4iJgS+BBSSuZ2YOSVgYeHu4DpkyZQnd3NwBd\nXV309PTQ29sLzPfJjdfy9OnTc/38siw7vaWRJ9pz9Mt9fX0ceuihozoeGjQa5dJnuOXstVsGefJY\n3nHH6Uydmu/12tfXx9y5nufT39/PSOTZY9gYOBfYDHgOmAHciGcjPWZmx0maCnSZ2f8EoNvdY2g0\nGpkfTeciNTDrLVqM3KlSe4726X0sOlapx1ClthwtRfwui0xXPRzYD09XvQU4AFgG+AnwGiJdte1U\n6YZQF8KVFJStVlIMcKsZcUMoH2EYgrIZhiiJkcj6MTuZqJXUOdTlmq2Hno2iBRhAGIaaEbWSgiBY\nEOFKCjqSKrlKwpUU1KpW0lgIwxCMhSrd+MIwBEUQMYYWqIcfsz56ls1nmwd1acs66Fk2HcMwBEEQ\nBAMIV1LNqFINobFQJT3DlRQUQcQYgnnEDaF8hGEIiiBiDC1QNh9ffjSKFqAt1KE966Aj1EPPso27\nCcMQBEFQMGUbdxOupJoRLoTyEa6kIEpiBEEQBKUmDEOian7MyZP9KWNhX9AY1XGT/2cqpXJTNp/t\nSBijaBCJxmgaMr2MIR8UC0PSqF+dQaNoAQYQhqGizJnjXc+Ffc2aNbrj5swpWuOFo2w+25EQo2iQ\nsTSmmZ+zRJjZsC+YtYDtwXgTMYaK0m6fZNV80lWSN2IMI1MlWSdPbv9D1KRJ8PjjC39cUVN7BkEQ\njJlp04qWoHWaPfl2koc3LVxJiarFGEZLXfQsm882D+rSlr29jaJFyJ2ytWUYhiAIgmAAec/5vC5w\nXmbVmsCXgEn4/M+PpPVHmtkVg46NGMMI1CHGUCV/7ViIGEPnUKW2LEWtJEkTgPuBzYEPAU+Z2Ukj\n7B+GYQTqYBjinJ11zjpQpbYsywC3HYB7zOzfgNKrNJTNx5cXoWfnUAcdoR56lk3HdhqGPYEfp/cG\nHCLpNklnSepqoxxBEFSIGTOKlqB+tMWVJGkx3I20vpk9ImkF5scXjgVWNrMPDzomXEkjEK6kOGfV\nzjlaQtZ8zlmGcQzvBG42s0cAzOzhjHBnApcNddCUKVPo7u4GoKuri56eHnp7e4H5Xa+6Ls9CNAS+\nND85M6/lWUCjMavt+jYl6NTzFbUMDRqN8sjTKctlvn76+vqYO3cuAP39/YxEu3oM5wGXm9nMtLyy\nmc1O7z8NbGZmew06pq09hkajkfnRlJ/RPiWMVs8qPQlBPfQcyzVbrafwBma9RYvRElVqy0KDz5KW\nwgPPF2VWHyfpT5JuA7YBPp23HAviwguLliAIgqAcRK2kRG8vlCwxYEQixhDnrNo5R0vIms85y5Ku\nGgRBsNBUqVZSp1BrwzB9uvcUenvh2msb895Pn16sXHnSqFK3aAxUTc/RTavQGO10DEyaVLTGrRO1\nktpPraurHnqovwB6eqrlSgo6h9G6HqrkYgmqRcQYEhFjKNf56nTO0VIlWetCla7ZMoxjKD277Va0\nBAtPO2c1rJLrIQiCsVHrGEOWnp5G0SIsFKOc0RFojOq4dlccHStl89nmQ6NoAdpCHdqybDrWqscw\n1onDy+p2C4JOZsYMd/UG7SNiDPPOVw9/bZX0rJK/tgiOPtpfnU6V2qRK12wp5mNYWMIw5EOV9KzS\njyzIjyq1SZWu2Rjg1hKNogVoE42iBWgZY5RJ+hKNUR5n5ZomZETK5pfOj0bRAuRO2doyDEPN2G+/\noiVoHTHKCLsZzJo1quNERR5NgyBHwpWUqIu/tkpUqVse5EeV2qRK1+yYYgySTgLOMrM/L/ypR09M\n1BNU6UcWjMzkyTBnTnvPOWlSAWnW7RxclGUUF+1YYwx/Ab4n6UZJH5G03EJLUAHK5uPLi9Czc5gy\npVG0CC0zZ85YvIKjG3vTbkMEo3d/Nkbp+szL/blAw2BmZ5jZVsC+QDdwu6QfSdp23KUJgqBlZs4s\nWoKgU2kpxiBpIrALsD/wauAnwFuAZ8zs/bkIFq6k2hOupJEJWeOcYznnmFxJkk4G/grsBHzVzN5g\nZseZ2S5Az8KLExRJBNiDIFgQrcQY/gRsbGYHmdmNg7a9KQeZCqFK/tqxcMwxjaJFaAt1iDHUIb8f\n6tGWZdOxFcPwBLBoc0FSl6TdAMxs7nAHSVpX0q2Z1xOSPilpsqSrJd0t6SpJXWNXY+yEvzYIgsBp\nJV31NjPbeNC6PjNr2Y0kaQJwP7A5cAjwqJkdL+kIYJKZTR3imCiJkQNV0rNK/toiqNLYm7q0ZZXO\nOdZ01aEOnLiQMuwA3GNm/wZ2BZrP5zOBCs6EEATFUxWjEFSPVgzDzZJOkrSWpLVTMPrmhTzPnsCP\n0/sVzeyh9P4hYMWF/KycaBQtQJtoFC1AWyibzzYP6qAj1EPPsunYimE4BHgBOB84D3gO+HirJ5C0\nGJ7qesHgbclXVJGOe2dQpVpJQRAUwwIn6jGzp4EjxnCOdwI3m9kjafkhSSuZ2YOSVgYeHu7AKVOm\n0N3dDUBXVxc9PT30phk7mhZ2vJb328/X5fX5ZVmeMaNc8ixoGUZ3fHNdu85X3PfDQu1f1DI0aDRG\nd3xvb2/br5+qXK8Ls9zX18fcuZ4v1N/fz0i0EnxeFzgMH/XcNCRmZtuNeOD8488DLjezmWn5eOAx\nMztO0lSgqwzB56B8VCmQF4xMXdqySucca/D5AuAW4Cjgc5lXKydeCg88X5RZ/Q3gbZLuBrZLy4Uz\n+AmsUwk9O4e6jL2pQ1uWTcdW5nx+wcy+PZoPN7P/AK8atO5x3FgEQTAGZs70+ZCDYLxpxZV0NPAI\n/tT/3+b6dIPPT7BwJdWeKnXLiyBkjXOO5ZxjnY+hnyEyh8xsjYUXpXXCMIwejaEmfJm+8yr9yIqg\nSrJWaZ6CsVCla3ZMMQYz6zazNQa/Fl6MctNJ/lozG/Y1a9asEbd3CmXz2eZDo2gBWmYs07SOdq6C\nKk3TWrbrtZUYA5I2BNYHFm+uM7Mf5CVUEYS/NgiCwGk1xrANsAHwC3xcwm/NbPdcBYtaSbWnSt3y\nIohaSeU8Z7sZ7RSmY40x3AFsDNxiZhtLWhE418xyzSwKwxDU5WZSB6ItR6aY72ds4xieNbOXgBfT\nfM8PA6uNp4DloFG0AG2hbL7MvKiDnnXQEeqiZ6NoAQbQSozhJkmTgDOAm4D/ANfnKlUQBEFQGC3N\n+TxvZ2kNYFkzuy0/keadq62upCr5a+tCuB86h2jLkSmbK6mVGMM1Zrb9gtaNNzGOIR+8kFnRUrRG\n3Ew6h2jLkSmbYRg2xiBpCUmvBJZP03E2X93AqvmIWhz18GPCjBmNokVoC3Voz04aezMSdWjL/fZr\nFC3CAEYKPh+MxxTWxSfmab4uBU7LX7QgCEYi5invHKZMKVqCgbTiSjrEzE5tkzzZ84YraZxoNPwF\ncMwxMG2av+/tLbdbKdwPUd6kauesEiO5klrJSjJJk8xsTvqwScAHzOz08RQyyI/BBiCC7NWhTDf3\noD60Mo7hwKZRAEjvD8pPpGKoi7+2v79RtAhtoQ5+6TroCPXQs2w6tmIYJkiat5+kicCi+YlUDHXx\n1/b0FC1BEARlp5UYwwnAa4DvAsKD0v8ys8/mKliUxKg94ZfuHKItR6aIcVRjHccwEXcdNcctXA2c\nmcpk5EYYhiBuJp1DlYrLFUFlxjE0SQZgJnCUme1uZt9dGKMgqUvShZL+IulOSVtIOlrSfZJuTa8d\nW1cnLxpFC9AWyubLzIs66FklHUc5FUO6WTZGdVxVjILTKFqAASzQMEjaFbgVuCItbyLp0oU4xynA\nL83sdcBGwF/wGeFOMrNN0uuKhRc9CIIgyINWXEm3ANsBs8xsk7TuDjPbcIEf7tVYbzWzNQetnwY8\nbWYnjnBs1EqqOeFKCqAebVI5VxLwgpnNHbTu5RbPvQbwiKTvS7pF0hmSlkzbDpF0m6SzJHW1+Hm5\nEUYhCILAacUw/FnSB4FFJL1W0qm0XnZ7EWBT4HQz2xQv2T0VOB03Gj3AbGDYnkO7qJK/diyEnp1D\nHXR0GkULkDtlq5XUysjnQ4AvAP8FfgxcCRzb4uffB9xnZn9MyxcCU83skeYOks4ELhvq4ClTptDd\n3Q1AV1cXPT099KYhvM0fxXgt9/X1jevnlXW5SVnkWbC8ozt+tO052vMVsdzX11cqefJa3m+/csmT\nx3JPTx9e+Ti/8/X19TF3rjt/+vv7GYmW52NI8QIzsydbOmD+cb8BDjCzu9P80UsAJ5vZg2n7p4HN\nzGyvQcdFraSaEzGGIMiPsY5j2Aw4G1g2rZoLfNjMbmrx5BsDZwKLAX8HPgR8C3cjGXAvcLCZPTTo\nuDAMNScMQxDkx1iDz2cDHzOz1c1sdeDjaV1LmNltZraZmW1sZv/PzOaa2b5mtlFat9tgo1AEdamV\nNNil1KnUQc866Aj10LNsOrZiGF40s+uaC2b2W+DF/EQqhrrUSqoa0uhe2247uuMmTSpa4yAonlZc\nSdPxuMCP06r3A88B5wCY2S25CBYlMYIxEO1ZLTpl3onRUsVaSQ08FjAkZrbtmKQb/rxhGIJRE+0Z\nVInKDXAzs14z23a41/iLWxSNogVoC5/4RKNoEdpEo2gBcmf69EbRIrSFsvnf86FRtAADaKVW0g+z\nI5MldUv6db5iBXnx298WLUEwXqShGkEw7rQSfL4O+IOkd0k6CLgKODlfsdrPtGm9RYvQFrq6eosW\noU30Fi1A7nR39xYtQltoDtLqbHqLFmAACxz5bGbflXQn8GvgUWBTM5udu2RtppNrJU2fDj/7mb+/\n9tr58z/vthscemhhYuXKtGlFS5APjYa/AI45Zv76wfN6B8FYaCX4vA/wpfTaCNgR2N/Mcu3Itjv4\n3Gg0avFk0tPToK+vt2gxcqcO7TllSoMZM3qLFiN3oi3zYaTgcyu1kt4LbGVmDwM/lnQxMAMfuRwE\nQRCMkSlTipZgIC3XShpwkLSYmT2fgzzZc0RJjByYPr1z3Ud1w4uuFS1FUFVGNY5B0k/M7H3p/XFm\ndkRm21Vm9vZcpJ1/jjAMQRAEOTHacQyvzbwfbASWH7NUJSNqJXUWddCzDjpCPfQsm46tpKvWgqiV\n1FnMmFG0BEFQXUZyJd0F7AUIODe9p7lsZuvlKliUxAjGQLRnUCUqUytpUI0kMaheUt7lMMIwBGMh\n2jOoEpWplTSoRtL/1EvKT9yiaBQtQFsomy8zPxpFC5A7dWnLeujZKFqAAUSMIQiCIBjAqMYxtIPR\nupImT4Y5c3IQaAQmTYLHH2/vOYORCVdSUCXK5kpqZeTzWE7chc/3vAEeo9gf+BtwPrA60A+8z8zm\njtc558wpZp7goFx0aq2kIGgHrZTdniBpH0lfSsuvkbR5i59/CvBLM3sdXmfpLmAqcLWZrQNck5YL\npx5+zPro2dvbKFqE3KlLW9ZBz/32axQtwgBaiTGcDmzJ/HTVp9O6EZG0HLC1mZ0NYGYvmtkTwK5A\nc9TATGC3hRU6CIKgk6hcrSRJt5rZJs3/ad1tZrbxAo7rAb4L3AlsDNwMHArcZ2aT0j4CHm8uDzp+\nVDGGYnx14c8OgqBajGlqT+B5SRMzH7Y88HILxy0CbAqcbmabAv9hkNso3fnjlhoEQVAiWgk+nwpc\nDKwg6WvA7sBRLRx3H947+GNavhA4EnhQ0kpm9qCklYGHh/uAKVOm0N3dDUBXVxc9PT3z6rI3/Y6D\nl5szIQ23fbjl6dOnt/T5VV9uriuLPHkt16E9+/r6ODSVyi2DPHktD752i5ZntMvbbju24V+zZs0a\n8/Uyd67n+fT39494rpFGPq9pZv9I718HbJ82XWNmf2lFEUm/AQ4ws7slHQ0smTY9ZmbHSZoKdJnZ\n/wSg2+1KaoxhMpAquZLGomeVqMMkNnVpyzroWYSOoy2JcbOZvUHSNWa2/ZA7LfjEG+PpqosBf8fT\nVScCPwFewwjpqhFjCMZCtEkQjMxoDUMfcAHwUeAkvF5SEzOzk8Zb0EHnD8MQjJpokyAYmdEGn/cE\nXsKf8JcBlk6vZdKro8j6MTuZuuhZttozeVCXtqyDnmXTcdjgs5ndBXwjpaZe3kaZgiAIggIZyZW0\nj5mdI+mzeEppuJJKdM5gZKJNgmBkRlsrqZlBtAwx1iCoGFErKQhGz0jzMXw3/T/azI7JvoAn2yZh\nmyibjy8v6qJn1ErqHOqgZ9l0HO18DJ8ZVymCIAiC0jCq+Rgk/dvMVstBnuw5IsYQBEGQE2OtlRQE\nQRDUiGENg6SnJT011AtYpY0ytoWy+fjyIvTsHOqgI9RDz7LpONI4hqXbKch4YWhgYm1bzjn/b1AO\nZsyADi+vEwS50XFzPkeMIYBokyBYEBFjCIIgCFomDEOibD6+vKiLnlErqXOog55l0zEMQxAEQTCA\niDGMA+HPLh/RJkEwMhFjCGpH1EoKgtEThiFRNh9fXtRFz6iV1DnUQc+y6RiGIQiCIBhA7jEGSf14\nNdaXgBfMbHNJRwMHAI+k3Y40sysGHRcxhiAIgpwY7XwM44UBvWb2+KB1J+U92U8QBEGw8LTLlTSU\nVWpz4YqRKZuPLy9Cz86hDjpCPfQsm47tMAwG/ErSTZIOzKw/RNJtks6S1NUGOYIaMWNG0RIEQXVp\nR4xhZTOE/lwpAAAgAElEQVSbLWl54GrgEOCvzI8vHAusbGYfHnRcxBiCURNtEgQjU2iMwcxmp/+P\nSLoY2NzMrssIdyZw2VDHTpkyhe7ubgC6urro6emhN5XMbHa9Bi/DyNtjuR7L0KDRKI88sRzLRS/3\n9fUxd+5cAPr7+xmJXHsMkpYEJprZU5KWAq4CjgH+ZGYPpn0+DWxmZnsNOratPYZGo5G5qbTnnEUw\nFj2rhNTArLdoMXKlLm1ZBz2L0LHIHsOKwMWSmuc618yukvQDST14/OFe4OCc5QiCIAhaJGoljQNV\n6jHUhWiTIBiZqJUU1I6olRQEoycMQ6IZrOl06qJn1ErqHOqgZ9l0DMMQBEEQDCBiDONA+LODIKga\nEWMIgiAIWiYMQ6JsPr68CD07hzroCPXQs2w6tqO6attRm8vzTZrU3vMFC2bGDOjwMVFBkBsdF2MY\n/fkiTtBJRHsGwchEjCEIgiBomTAM82gULUBbKJsvMz8aRQuQO3VpyzroWTYdwzAEQRAEA4gYw7zz\nhU+6k4j2DIKRiRhDC0Rtnc4i2jMIRk8YhkQdautA+XyZeVGH9qxLW9ZBz7LpGIYhCIIgGEDEGIIg\nCGpIxBiCIAiClgnDkCibjy8vQs/OoQ46Qj30LJuOuRoGSf2S/iTpVkk3pnWTJV0t6W5JV0nqylOG\nVpkxo2gJgvEk2jMIRk+uMQZJ9wJvMLPHM+uOBx41s+MlHQFMMrOpQxwb4xiCURPtGQQjU3SMYfCJ\ndwVmpvczgd3aIEMQBEHQInkbBgN+JekmSQemdSua2UPp/UPAijnL0CKNogVoC2XzZeZHo2gBcqcu\nbVkHPcumY97zMWxlZrMlLQ9cLemu7EYzM0nR4Q+CICgRuRoGM5ud/j8i6WJgc+AhSSuZ2YOSVgYe\nHu74KVOm0N3dDUBXVxc9PT30ptlXmhZ2vJab6/L6/Fge32W1MBvTSLvMmjWrVPqMdrlJWeTJY7m3\nt7dU8uSx3FyX5/n6+vqYO3cuAP39/YxEbsFnSUsCE83sKUlLAVcBxwA7AI+Z2XGSpgJdZQg+H320\nv4IgCOpAUcHnFYHrJPUBfwB+bmZXAd8A3ibpbmC7tFw4daitA+XzZeZFHfSsg45QDz3LpmNuriQz\nuxfoGWL943ivIQiCICghUSspCIKghhQ9jiEIgiCoEGEYEmXz8eVF6Nk51EFHqIeeZdMxDEMiausE\nQRA4EWOYd76orRMEQX2IGEMQBEHQMmEY5tEoWoC2UDZfZl7UQc866Aj10LNsOoZhCIIgCAYQMYZ5\n54sYQxAE9SFiDC0wbVrREgRBEJSDMAyJqJXUWdRBzzroCPXQs2w6hmEIgiAIBlCrGEMrNfxHoqzf\nVRAEwcIyUowh7xncSkXc2IMgCBZMuJISZfPx5UXo2TnUQUeoh55l0zEMQxAEQTCAWsUYgiAIAifG\nMQRBEAQtk7thkDRR0q2SLkvLR0u6L627VdKOecvQCmXz8eVF6Nk51EFHqIeeZdOxHT2GTwF3Ak2/\nkAEnmdkm6XVFG2RYIH19fUWL0BZCz86hDjpCPfQsm465GgZJrwZ2As4Emr4sZd6Xhrlz5xYtQlsI\nPTuHOugI9dCzbDrm3WM4Gfgc8HJmnQGHSLpN0lmSunKWIQiCIFgIcjMMknYGHjazWxnYQ/g2sAbQ\nA8wGTsxLhoWhv7+/aBHaQujZOdRBR6iHnmXTMbd0VUlfA/YBXgQWB5YFfmpm+2b26QYuM7PXD3F8\n5KoGQRDkyHDpqm0ZxyBpG+AwM9tF0spmNjut/zSwmZntlbsQQRAEQUu0q1aSmJ+VdLykjdPyvcDB\nbZIhCIIgaIHSjnwOgiAIiiFGPgdBEAQDCMOwADTWSRyCjkLSxPR/RUmTJK1SApniGh2EpAnpf8d+\nN3nqVqv5GFolXVSvMbN+MzNJE8zs5QUeWFGa+klaw8zuLVqespK+p5ckrQRcDvQDf5N0O3CFmT1S\nlGiASdoWWC/JdYuZPVSQPIWSuZ4XAY6QtBRwK/Bn4C8dVJ1zAvCSpA8A/wL+YGYvjscHR4whIWli\n+tF/ENgKWAu4BzjRzP6R9um4kq8ZvdcGvg4cYmYPZrZ3nM6jpfldSPoi8BJwGbA18FrgGeCPZvaz\nNsvUbL+34u03C/gI8CYz+3s7ZSkLme/kW3i7TAa2B34ONIBbzay/OAnHTsb4rQ1cCWxpZg+nbWP+\nzYYriXlf5EvJTXAocAbwCLARcJWkL6eLreNukGb2Unp7GnClmT0oaStJ35G0bifqPFqSUdgIeBfw\nEzO7HTgLuATPsluxAJma7Xcw8BngOuAaM/u7pE0lva3dMhVN+i2vBmxiZlOBScApeAWGbwHbFinf\nOHMQMMPMHpb0irRuOUnrj8XVFK4k/Aef3n4Q+DXwILC+mW0q6Rjgo8AdwE8KEjFXJL0GvxZ+IOmj\neI/J8NTiD5rZ04UKWC4WBbqAyyV9zMyuBhqS7gCebbcwye25CO4m2Qj4BLBr2vwp4H7g6nbLVQTp\nu1gyXa+LAF+XtAHQZWbfSvtsBPyuQDHHTHqQbbq27wbWT++bDwmHAM+a2Z2jPUftewzNIFXiMuAE\n/Inw+rTuTuBrZtaRRiExGzd8DwFvBKYB+wKrUMKCh+0m++RlZjeb2XrAdOBrks6V9Doze9TM/tNu\n2czsZTN7Hvg9sDfwW+DZ5Fp6A3Bs0qEOv/VPAG+StISZ3WtmvwSeAJaVdHiqxnCfmd1drJijR9LK\nuMuwyZXAxpI+Cawn6V3AB4Dzx3SeunsKMn7jvYCLzezZ9JRxDHBF+j8lPRl2DBkf5WLpxoKk1wL9\nZvaCpPOBO83smGIlLZbM9zQB91Nvwvyu+0rAVGBz4C3tTFDI+NEnAWvjDzD7AO/AXSYGnG9mFzT3\nbZdsRSFpWeAp4DvAHOCM5FLbBne5LAl8rFl5oYpI2hIfGPwa4DDcfbgIbiyWBB4DrjOz74/pPHU2\nDJkf13Z4Mb9tzOzJtO3juMtgtpmdXaSc403mZrcM8CW8jtUteBf7XmAl4BtmtkeBYpaCzDUyHe89\nbQysC3wPT0x4UtIrzeyxNsrUbL81gR/i7q1n8DjR9bhL6xkzey7t3/EJBJIWaWbkJHfRocDKwIV4\nPbaHJb3CzP5bpJxjQdKewN5mtrOkLYCd8QeVn+NTG2BmL4zLuTr8emkJSQ3gZDO7RNLizR9Up5K5\nsZyN+yhXAt6N+6J/h7sl/tXp30OrSFoDuMjMNpH0I9yf/25gNeCDZvbrguQ6FfinmZ0gaQe89/Jk\nkunZOhgEGHA9L4n3mr6XvAA7AQcCE4HpRbXTeCHpJDztdhnc+P8IeDPwfvw3fIWZfSeyksaBlIl0\nJ/A0QOYp6weSOvKJOf2IXgt0m9k38HTLo/BYw9eBN4dRGMBKwImS3gSsamZfxf24/8B92G2jGe+Q\ntC6wAvAogJn9ysx2wH/Tr07rOt4oDOIU4LXJKCyNu0LfA/ymYLnGTHJl/hIPLH8FuCH1fq4FjgYu\nJmXFjUe71zIrSVIP/v3dltwENwFflo9ivQjYAI/071eknDkzF5iW4ikys3MBJG2F53rXmuxTl5n9\nXtIf8GDu45I2AXYBrjWzm9spV+ZHvxGehrm7pPvxMTePApsBtTLqmXz+N6Ze3UbAF4BXSbrMzE4o\nWMQxkdJQFzOzX0l6D/A8fr/6Oe4me1DSuXjPaHzOWb+HCpAPYvs97gp4CugDdscHK70Hd6dc2rxZ\ndgpNP2z6ET1jZg9kjOH1wFIAZlbrirdZoyBpa2B54C94GvOh+HXzJuCdZvavNso1YAS+pMXx8Qtb\n4hlkDwA3Vf1GuLCkp+nV8CfnJYEX8CfpW4DPA/tVOeVaPj3Bn/Hf6Npm1idpd9xNdj+eRv8rG6dR\nz1BTwwAgHyZ/Gj6b3E+Aa/Af/iTgMTN7qkDxxp1BN7vfAoeb2fVpeRPgQ7hhOLQZgK8rmYDzYfhM\ng934U9r2eEDzZQDLjBBvg0xNP/ri+HS53fgN8Ei83Q7Bb46/xh9s7q5DJlIWSTviY3AuM7MbJX0J\nL21zQMGijQlJi6ZMwRl4DOnbZvYXSYvhmUnbAbuY2biNo6mdYcj86I/Hc9HXAD6LzzR3IT76t61+\n43aQ0ftT+ORIe2duNq/AvRTPFy1nWUg34GvMbCtJJwBzzOyrydXWb2b3t1meZlt9E1gV+C7wXmBP\nPAXzwhQT2wu/MXZUJt1gUkbWa4HnzWzWEL2ptfER6duY2aNFyTlWMkZhEbzdP4u7un8B/MDMHpW0\n7Hg/zNXKMGS+5A2BI83sg5lt++A5waeZ2VmFCZkjKXB5NPCimR0raSkz+0/KaFnTzL5XrITlId14\nDgbuAg42sy3S+j8AXzGzywqQqQvvEezWdGFJekda/mhanozfLCvrOmkFSecB7wRuwIPtP8N7c5cA\n9+HFBG+1MYz+LZrMw9xkvGfwZTN7Lo3L+DjwSuAkM/vFeJ+7NllJ8rIPG6bFHwPrp8FBAJjZOXiM\n4ccFiJcr8sF7zcDl5cAb0o3vmbTL1/GMpCBhXjjxfuAIvB5S8+HhqSKMQmIiPjp/+8y63wJbpJRa\nzOzxTjcKiaPw7+JzeOrw+fhAw5OBjwFvq7JRSDR7QKfiP9/n8DfXmtn7gHPwAW3jTp2yks4FDktP\nzXsDM4DbJR3ctLid+IOStA7wnKTlgR3N7Jw0buMS4BZJywG3F3izKx0pH/4V+CC21YDtJb0X+C9w\neJtlaT417gy8D/gpcLqktwNnA3sAN5vZvXUZtwBgZvdI+jWepjkFTyKZgPcUJtMBmVkp7XY1PE7y\nQfAMJTP7r3wE9E/M7JmRP2V01MKVJGlF3LpeDnzKzLrT+gPwukCzgT3M7J+FCZkTGd/0lriudwPH\n4z+czfA67vd1YlxlYcjcgHfFHxxWwdN2jwFehY8ufs5SaeMC5JsJnGtmV6Uc/W8AS+M1rs42s8cH\n+9k7lUGJFG/Hq6W+AzjdzM7spO9B0hJ4teergPPM7Pn0cNvABzLel8t562AYACRtBpyH5+8fDvzG\n0vBxSWcAPzezSwoUcdzJpKfujg9+mYV3u9+KX1jnpJTV2jxpDsWgG81v8J7CLXgu/KbA/5nZaQXK\n91bgq3g66pfM7K9p/bxR+p10M2yFZpulHu9ReAXkzTvAffQ/JFfwznj25OK4K/HlPNPKO94wyEc2\nG+4aOBYPTK2Mu9EuNbNrCxQvNzI/HAG/Ag4yLyj2Sry7vReen79nnW4oQ5HpVe2AG87PZW64vcDp\nwPFmNqMAmYTn5r8XT0v8F260rrM21mcqC5nrenAW0iF43aBpZvbv4iQcG1m9JL0aL/9/VXIlvjvt\nNhv4quVY96mjDUNyIf0BuBQ3BhfgwZr1cH/x5vjAkf+zcRwcUibkZXiPAo4ys2vSugn497GoVXwm\nq/EipQP+EC+Sdzruenyi6J5UGkuxGO7+WxVPT10N7/meXDfjoEyxvLScnYHwMHwGwnEpJFcEGX2O\nxUuxvBp/MPiGmV3eLjk6PStpMbz7/QgefH4f3g07AtgtvV+ng43CBDyl7T5gf0nvk7SSeQ3/+8Mo\nzMfMXjSzPXH30W7AcXht/6WLkim1Xx/wOjwDZ0MzOw7PwPlnnYyCpPXS24PSWBxg/gx2ZnYP8MmK\nG4XmnOJrkHqu+PiqW/FaXb+W9Pq2yNLJPQaA5F//Jv4k8XNJJ+OjRn+Eu1Jm5BXZLwPpSXgxfPj8\nmniP6Rbgl+FCmvd0tgpeSvs54La0+RB8Rr8TzWxmm+XKxjwmMn/O4g/jZdFPMrO70vaOjy3IqxR8\nBTfYZmZrpvUdVwk5tfdb8d7h34ATzGxrSR/Br8epZpb7DHQdn65qPiL0MWDX9H8n4F0p3W3RKj9h\nDEXmZteL/5B2xNMaT8Rr6uwGrNTpN5NWsPklI76Nl0N5PT6g7QozO07ShRQwXWfyoW+FBxh/Dzwi\n6WJ8HMMheAG/u9K+Hd+O5jPjfTqNvdlGPonUYc1Ygrz22XlW4RIgkg7GJ1xaBa/j9n28nW9IuywH\n/LQdRgE635XUHO17I/AffL6BG5JRmNhpRgEG3Oym4b2iq4HXp/W34G60HxYkXmlI1wXyMhLNDI8V\n8CfyQ+V1aSaa2QNtlGkNSW9Mi5sBl0o6XdLyKdB4I56e2py/uA6/34np/3J4bbNX4rOz3SHpWElH\nArtW3CisjU9L+jc8UWRb3H34e2AjSSfi83eP+wjn4ej4C8uc/5jZUfjNsjkKumN9aKm3cC9einlL\nfAIX8BGUb+q07vdoyGRsrQUcLWkqPrXrscAf8QeJe9ss1rdw9yZmNh1PklgauE7SV/BR+X9LA5zq\n4EJS5oZ/FvC0mb1kZh/Be3fr4N/RYUXJOE58A59I6Ht4G/8D2M58XNU0fD6Jnczsb+0SqOMNwyBO\nw9NW39nhP6rf4QHnc/BBP/fLa9S/EX8KqTXNp1Dcb38pPlHTC3imD3g2yB/a2aOUl9tYvJl5kp6E\n55jZvvjI3rl4jabj0iEd+2CTodmrOwDPoPu9pG5JnwG2MrP3Ax+veHrqSvgsbL2SutND22Q86IyZ\n3WBml5hZX1vl6vTg82AkLQosZWZzF7hzhRg8SC39mE7GjeHtwEeAM83sBwWJWAoyMZhJ+GjSt5nZ\nXHnp8SvwXsIzZrZdO2XCM092MrP7JH0VWN3M9s7sMy8eVofeQpPkLvtpej0JvAt3J83Gg/Dt7tWN\nO/ISLN/AB7E151xoFm0sJA5atx4DZvZCBxqFick1spqkfSV9Ep9fYm18fol1gDPqbhRgQAzmC3iv\nYG5afys+tuNQPPujnayBl5D+QHqCfCs+zwIAkg7EK70C9Qg4N0m6fg/YAR+geraZ7Y6Xnm5L6mae\npHEZz5jZJ/Fgs4AV5PNVU1QctHY9hk5G0pV4MbE78WkofwN8t9MM4WjJ9BZeicdb9gS+ZWaHFixa\nM634KOBLwFVmtmNa/yq8fMluKWmi48uXDBr9u7h5qelV8Okt+1MW0gFmtm2xko4PzSSCjM7vwWML\nzwBvtwKKe9aux9BpNC8qefXUm9LT1NeBL+PF366Q9M4CRSwNmd7C/+GutfWALSX9U6k0eVGkAXZH\n4/7llyTdlNIzPwFckozChE43CjDgBvlF4ISUnrpEMgqT8YytqSN9RtUwL3+ySHp/sZn1AF8vwihA\n9BgqzaCBUAfgI7tPBX6RLrRXAlvgBQM7aqrShUXzCwpuDbzfzD6R2fYevMDiYWZ2amFCZpC0MV4N\neDKwXI0ykZq9up3wYpdT8LI1i+Kl8j+Bpxd3ZLUC+N+yH4XIEIahumR+RIfjZYefwuf//SnwM2vj\nnMRVIPWu/gosA7zVzO4etL10bhpJq5vZP8tws2gn8rkWjsDjLUvjU5n+FXgaWKvKKdeZh5Q342MW\nbsenYy3NtReupIrSzPGW1/LZAniPme0GnIKPdj5L0tsKFbJEZJ62N8MHCt2Wxi6UmpTLTh2MQnNw\nX8oc/AI+unsnfB72B/Fr+2MVNwpKRmE5vH7bcnjJngvkc6aUgjAMFSXzdLEDsA3wpdSD+HkyELPw\nCrK1JjNmYRl5AbJuM/swsBWwm6S58vkOKNMTW92Q9H489tPMHPx9cn9eCeycesW7WefMmbIP8EMz\nO9zM1sXTlb8j6fspfbVQwpVUQdLNbqL5bE6L4fWPdgaWwCffubRQAUtE0z0k6Sx80NAGuJvthLR9\nf+DPZnZjkXLWneQ6+pqZ/UpeMO5+M7ssxYTeBzwPNKzCU9Bq/hwby+PJIWvgca070vbV8FnZvlGk\nnBCGoXJo/hwTP8MLbp2DD/xZHO+W7o93wY8ws+eLkrMMZIzC2/CqlNtLugufnKhP0hZmdsOCPifI\nF0mfB7Y1s7dJegVekmRPS7OxSerqpJRrSdPwSr7r4RUK7gCuLVNMMFxJ1aM5x8RjeCbNvvho0LOA\nD+BZLC/X3SjAANdQF3C+vILltckorAccJ2nZ4iQMkiFYD/i7pDcB38HTc5tGYSngNEldBYo5ZjJp\n5Tvhs7IdB0zHH+q2AD4jaYMCRRxAGIaKYV4X5iTgQ8DzZrYHXj79j3gBrhl44C4A0o3/auA9wDF4\niRDwkcWzzOzJomQLwLxq7Il4ZdEPA73ADZJXv8Xb6fmq9xgyacbbAfendbfhul+JZ1v9vRjp/pdw\nJVUUSdsCu+IThM9g/hwTi9W9tyBpBXxazv/K5zE4CJ8P+L14nZ3F8YJ1OxQoZpAhPVFviWfULQnc\njc+8+AW80ugTBYo3LkhaHx+Ytz5wJj7C/R9p2yssxzmcF5aOn6inE0lPUzfi1UGvxifwaM4xUWuj\nkFgb+L6kF4HLzeyRFNycA7yMB6HvK1LAYD6ZVOLfSboDNxC9wMeBH1TZKGQHJZrZnZI+BLwfT5te\nRdKf8XTcUvWIosdQcSR9FtgI+CJwX6ePjF0QkpY1sydTCuo5eKbWZ83snLS9F/+e7ilQzGAQmUFf\n+wEX4IkVG5nZRQWLNiYymUj745PvLIfPH7Ee/mD3OuDLZlYaNxKEYag8KXg3E/eXf7doeYpE0jJ4\nnajD8dnYFsMnvvk+XpDsULxkyD7W5vr2wYKRzxlyBV52uvLzsGcqE2yBX3dTgD8BbzSzW5P7bL1m\noL1MhGHoANShc0yMBkmvxn3UX8ZLjV+T1k/FA39XmtmJBYpYezK9g8WB5W3+3M1TgdlmNrOTYmWS\nfoQ/nEzCKxR8IJXDeDNwspVwWtIwDEFHkAzCG/HYy8N4Nsu2QB9uIP6iQeWNg/ajgSW1zweWBdYF\nPmFmv0zrBZ0zEl3S7vjDysdwwzBb0ul4gsSRIx9dDJGuGnQK2+LpjnsDG5vP3bwPMBE4VdKX8NLN\nYRSK5W2S1pW0B/AqM3snPvfA2ZKukrShJQqWc9Qk927z/VvxsQpH4tMKPyevhLwF3qstJdFjCDqG\nVD7hKGAtvBrnhWZ2b7OsgpkdUqiANUc+6dBpeBrqM8DDWbeepOnAHvi0ppUtGihpMzzG9f/wXsFn\nku7fwQdb3gT8rszlPcIwBJUn47M+DR8R/hSwIV7D/3K8pHFlUx47CUlLAAfi/vXlgROAP5nZ/c3t\nZvZsgSKOCflkO2/CJ4LaBe8p/Kh5/Ulaszl2oczEOIag8iSjsDqwlZltApDKkR+Llx2YANR+vusi\nSSUtngYMH0PyBXxu7T2BDST9Ebi16iPRU0/nd6lQ3iLAqni5i98BvwUOlfR1M5tdpJwLImIMQeVJ\nwcpHgbslHS5pRTN72sw+jZcznlWshAGwKT4C/RpgEzP7u5l9Ga/x1Y33IpYqTryx0yzxLukNwHNm\n9gF8ACp4lYLLgDXKbhQgegxBhWlmuKRA5X8knYl333dLP9LNgb800yGDQnkQOAAvTXJhunneZma/\nkXQ/Pitb6W+YI5FJO/0mcHZ6fxNwHa73kvg0paUnYgxBJRmU9rgn3mXvA1bGg8+TgWeBo63CM351\nEpLWxWMLq+PtczNeUO5zwB5VdiNlSrzvC+xsZu9L5d6/CbyEJz+UanTzSESPIag0kk7Ar+O1gZ3S\nnAtLdsLI2U5C0s54+vBn8ayk3fEe3V50Rmyh+YT9LGCSjgJWAz4BvA14N14VuRKEYQgqR3o6ezml\nAG5mZttIOgMvPQ7wbkl3prLGQTn4K3AvngRwJXAycBFe5XZOkYKNlWZvIS1eBPQA6wBHmtn9kj4H\n/LQwAUdBuJKCyiKfCvEAQMCbm2W0Jd0GfNLMri1Svroz6IbZnHRnIzyVcwXgfDObMXi/KpGph7Qq\nPvL+dcCFwN+Ta+lI4O1mtm2hgi4kkZUUVApJn5H0UZg3adGD+KCoH0rqTl34v4VRKJ50Y+yWdGBa\n/g8ejJ2Op61u1tyvOCnHTFP26fjYmbfg0+qafD72K/Dy4ZUiDENQGSRNxgcMnSLpGkk7mdm38cqV\n7wS+hac+fro4KYMmKY14ZeDzqb3eamYvmNmt+Mjn44uVcGyk3sLLknbAi1h+FVgR+L+0y17AP8tY\nPXVBhCspqBSS3oHPxHYfXi31ATyr5SH86W3RyEIqlmzGWGbdfrhRvxWfI+MF82lpK0lyHb0bT0td\nE593fRHglWZ2WBpw+TNg2ypWPY7gc1A1rsH9uGvg9e3fD/wCaABfNLOnCpMsmJcYkN5/Hp9KdQI+\nBe1GwL7Av4DfFybk+NAD7AY8aWY/lHQ0Xhtpp7T9eOCCKhoFiB5DUBEkbQNcT5p3QtIXgJWAI3D3\n0VeB75vZpcVJGWSCsVPxKTp/gU+luhPwMzP7YaECjiOS3g2cDpyHuzN3Ag7Gx2Y8Ymb7FSjemAjD\nEJQeSR/Dq3Kej48c3QAvL/Bx4NuddLPpBFLQ9RfAAWb2z1S3qukC/EjVxyxI2g6fMdEkrQBMxecT\nn4m7NlcD+qscVI/gc1AF/oy7HrYC7sHr62yI+6tflW5EQcGkdFTSzGt3AlNTvOFpM/spfsNcu0gZ\nx4qkvYEfAz9Pc0qsC/wd773ubGYvmtm9VTYKED2GoEJIOhT4JO6vnm5mDxYsUpBIbfMffA6MOWmM\nyTfw+kC/wgvk7Whm2xUo5piR9Drg8/gAtr/g6ber4PGFdfAy7//PzP5bmJDjQBiGoPQ051tI718F\nnIjPgPUD4Hgze6FI+eqOpJXxpIA9zexPad0r8CSBFfD04auAS6tUL2gwkhZtXmspy2oRPO7Vj2fI\nfQi42cy+VpiQ40QYhqASpJz4iRkD8UY8VfBbZnZmocLVHEnfAe43s2MlrYjfJD+Gl0L/pZmdUaiA\n44CkNfAMuH+b2bnJGH4KuM/MTkv7CL+nVn762IgxBFVhQpqQZ2LyW99kZhuFUSiWFN95Cp+EB3wC\nnp3w9OGzgG0kLVOMdOPK8nhF2D0k3YPPr3A38GFJ50nawJzKGwWIHkNQUpqDpCQtZ0NMy5mZzrOy\ndXY6BUlvAo4GlsFvngeY2fVp27XAMWb26+IkHB8y1+Q7gA/gaakrAfsDp5hPDNURhGEISkcmF/71\nwJ/beQMAAAYoSURBVBfxmjqnAGdXPdWxE0kulA3xOTH6zeyutP5twDQze0uR8uWFpLWBiXjv4SYz\n65iZAsMwBKVF0iV4PvydwFHAYvhAoks6pcveiSRD0Q1cDHzezH5ZrETBwhIlMYJSkemub4g/jZ2X\negk7pkyQU3B/7/eKlDMYkUXxYnLfDaNQTaLHEJSGbLxA0qfwWb5ux11IN6X1i+KB6ErnideBiP9U\nlzAMQWnIxBYOwYOYN+Kpj+DupN+b2V1xwwmCfAlXUlAK0s3+JUnL4jV1djSz5yT9HTcOWwJdwF1h\nFIIgX8IwBKUgc7PfFVgO2FfSTDO7G7hb0luA2YUJGAQ1IlxJQSlImSwAO+CVOFcAbgB+2yyzEARB\newjDEJQGSUsAK6RSze/Dxy9MwAPQP2yWwwiCIF/ClRQUSibgvD+wNbCdpGvM7MOSbsLjDU+FUQiC\n9hGGISiUZBQmAAfipYunAs/N32zfLEy4IKgpUUQvKANbAtfhKapvAb6U1p8iaevCpAqCmhKGISiE\nZrA5DVi7GZ/I5Xxgqpk9L2kX4FVmdl2BYgZBLQnDEBTF6un/54DXAFfis319QtIxePnmLxQkWxDU\nmshKCtqOpNWB7XEX0jZmtk5aPwE4DLgPuLtZBiMIgvYShiFoO2lyl3cAM/GxCjPxEc23pe3rm9md\nBYoYBLUmDEPQVjIT7CwFbAKsCWyKZyJdj2cnXWVmpxYoZhDUmjAMQdvIlNReCjgH+JiZPShpXWBn\n4NX4BPI7xXwLQVAcMY4hKIITgX8ko9CNj3D+DvAs8IowCkFQLGEYgraRegtdwDpmtp2k3YDd8BHP\newD7mdncQoUMgiDSVYO28xIwW9JfgH3wWb7WwiuqLlWoZEEQABFjCNpAM7YwaN3OwK1mdn8at7CW\nme1djIRBEGQJV1KQK2kCnpfT+6nAC8CDwA3JKKwOvCu9giAoAdFjCHIlk576eWA94FFgR+DX+BiG\nXwIvmdkTBYoZBEGGiDEEuZKMwtLAO4H9gSWAnwGPAV/EU1bDKARBiQhXUpAbkjY1s1uAVYBvAasB\nG5rZ1mn7m4BLCxQxCIIhCMMQ5IKkI/DewS2ZeZtXACZI+jCwGEBM2xkE5SMMQzDuSFoR2Bt4d1r+\nAPBHM7tH0teAo/FCeZ8tTMggCIYlgs/BuCNpBnCTmZ0m6c3At4HNzey/afsEYBEze75AMYMgGIYI\nPgfjiqTVgH2BNdKqjwPfyhiF1wJfBmIO5yAoKWEYgnHFzP4NrANsIukZYGszOyuzy/HAg1EPKQjK\nSxiGYNwxs3vMbDu8Yupzkv4g6bWSNgWWMbPTChYxCIIRiOBzkBtm9mtgHUmHA38AuogRzkFQeiL4\nHLQFSUsCe5vZ94qWJQiCkQnDEARBEAwgYgxBEATBAMIwBEEQBAMIwxAEQRAMIAxDEARBMIAwDEEQ\nBMEAwjAEASDpJUm3SvqTpIvSHBKj+ZxVJF0w3vIFQTuJdNUgACQ9ZWbLpPczgNvN7MRipQqCYoge\nQxD8L78H1gKQtJakyyXdJOk3ktbNrL8h9TC+IumptL5b0u3p/eKSvp/2uUVSb1o/JfVKLpd0t6Tj\nilEzCIYmDEMQZJA0EXg7cEda9T3gEDN7I/A54PS0/hTgZDPbCPj3MB/3cXw+642ADwAzJb0ibdsY\neB/weuD9klYdd2WCYJREraQgcJaQdCuwKtAPfCfFGbYELpDU3G+x9H8LYNf0/sfACUN85lb4lKaY\n2V8l/ROvPGvANWbW7GXcCXQD94+vSkEwOsIwBIHzrJltImkJ4Ep89rlfAXPNbJMxfK6GWf/fzPuX\ngIljOEcQjCvhSgqCDGb2LPBJ4KvA08C9knYHkLNR2vUGYPf0fs9hPu464IPp2HWA1wB3MbSxGM6A\nBEHbCcMQBM689Dwz6wPuwWMAHwQ+LKkPjzs03UeHAp9J69cCnhjis04HJkj6E3AesJ+ZvZC2D04H\njPTAoDREumoQjAJJS6TeBZL2BN5vZu8pWKwgGBcixhAEo+MNkk7DXUBzgA8VLE8QjBvRYwiCIAgG\nEDGGIAiCYABhGIIgCIIBhGEIgiAIBhCGIQiCIBhAGIYgCIJgAGEYgiAIggH8f+2yrUNls//gAAAA\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 102 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary Tables\n", "A bit more complicated than in R" ] }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.groupby('Region').size()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 103, "text": [ "Region\n", "Africa 46\n", "Americas 35\n", "Eastern Mediterranean 22\n", "Europe 53\n", "South-East Asia 11\n", "Western Pacific 27\n", "dtype: int64" ] } ], "prompt_number": 103 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.groupby('Region')['Over60'].mean()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 107, "text": [ "Region\n", "Africa 5.220652\n", "Americas 10.943714\n", "Eastern Mediterranean 5.620000\n", "Europe 19.774906\n", "South-East Asia 8.769091\n", "Western Pacific 10.162963\n", "Name: Over60, dtype: float64" ] } ], "prompt_number": 107 }, { "cell_type": "code", "collapsed": false, "input": [ "WHO.groupby('Region')['LiteracyRate'].min()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 109, "text": [ "Region\n", "Africa 31.1\n", "Americas 75.2\n", "Eastern Mediterranean 63.9\n", "Europe 95.2\n", "South-East Asia 56.8\n", "Western Pacific 60.6\n", "Name: LiteracyRate, dtype: float64" ] } ], "prompt_number": 109 } ], "metadata": {} } ] }