{
"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",
" Country | \n",
" Region | \n",
" Population | \n",
" Under15 | \n",
" Over60 | \n",
" FertilityRate | \n",
" LifeExpectancy | \n",
" ChildMortality | \n",
" CellularSubscribers | \n",
" LiteracyRate | \n",
" GNI | \n",
" PrimarySchoolEnrollmentMale | \n",
" PrimarySchoolEnrollmentFemale | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Afghanistan | \n",
" Eastern Mediterranean | \n",
" 29825 | \n",
" 47.42 | \n",
" 3.82 | \n",
" 5.40 | \n",
" 60 | \n",
" 98.5 | \n",
" 54.26 | \n",
" NaN | \n",
" 1140 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 1 | \n",
" Albania | \n",
" Europe | \n",
" 3162 | \n",
" 21.33 | \n",
" 14.93 | \n",
" 1.75 | \n",
" 74 | \n",
" 16.7 | \n",
" 96.39 | \n",
" NaN | \n",
" 8820 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 2 | \n",
" Algeria | \n",
" Africa | \n",
" 38482 | \n",
" 27.42 | \n",
" 7.17 | \n",
" 2.83 | \n",
" 73 | \n",
" 20.0 | \n",
" 98.99 | \n",
" NaN | \n",
" 8310 | \n",
" 98.2 | \n",
" 96.4 | \n",
"
\n",
" \n",
" 3 | \n",
" Andorra | \n",
" Europe | \n",
" 78 | \n",
" 15.20 | \n",
" 22.86 | \n",
" NaN | \n",
" 82 | \n",
" 3.2 | \n",
" 75.49 | \n",
" NaN | \n",
" NaN | \n",
" 78.4 | \n",
" 79.4 | \n",
"
\n",
" \n",
" 4 | \n",
" Angola | \n",
" Africa | \n",
" 20821 | \n",
" 47.58 | \n",
" 3.84 | \n",
" 6.10 | \n",
" 51 | \n",
" 163.5 | \n",
" 48.38 | \n",
" 70.1 | \n",
" 5230 | \n",
" 93.1 | \n",
" 78.2 | \n",
"
\n",
" \n",
"
\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",
" Country | \n",
" Region | \n",
" Population | \n",
" Under15 | \n",
" Over60 | \n",
" FertilityRate | \n",
" LifeExpectancy | \n",
" ChildMortality | \n",
" CellularSubscribers | \n",
" LiteracyRate | \n",
" GNI | \n",
" PrimarySchoolEnrollmentMale | \n",
" PrimarySchoolEnrollmentFemale | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 194 | \n",
" 194 | \n",
" 194.000000 | \n",
" 194.000000 | \n",
" 194.000000 | \n",
" 183.000000 | \n",
" 194.000000 | \n",
" 194.000000 | \n",
" 184.000000 | \n",
" 103.000000 | \n",
" 162.000000 | \n",
" 101.000000 | \n",
" 101.000000 | \n",
"
\n",
" \n",
" unique | \n",
" 194 | \n",
" 6 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" top | \n",
" Russian Federation | \n",
" Europe | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" freq | \n",
" 1 | \n",
" 53 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" mean | \n",
" NaN | \n",
" NaN | \n",
" 36359.974227 | \n",
" 28.732423 | \n",
" 11.163660 | \n",
" 2.940656 | \n",
" 70.010309 | \n",
" 36.148969 | \n",
" 93.641522 | \n",
" 83.710680 | \n",
" 13320.925926 | \n",
" 90.850495 | \n",
" 89.632673 | \n",
"
\n",
" \n",
" std | \n",
" NaN | \n",
" NaN | \n",
" 137903.141241 | \n",
" 10.534573 | \n",
" 7.149331 | \n",
" 1.480984 | \n",
" 9.259075 | \n",
" 37.992935 | \n",
" 41.400447 | \n",
" 17.530645 | \n",
" 15192.988650 | \n",
" 11.017147 | \n",
" 12.817614 | \n",
"
\n",
" \n",
" min | \n",
" NaN | \n",
" NaN | \n",
" 1.000000 | \n",
" 13.120000 | \n",
" 0.810000 | \n",
" 1.260000 | \n",
" 47.000000 | \n",
" 2.200000 | \n",
" 2.570000 | \n",
" 31.100000 | \n",
" 340.000000 | \n",
" 37.200000 | \n",
" 32.500000 | \n",
"
\n",
" \n",
" 25% | \n",
" NaN | \n",
" NaN | \n",
" 1695.750000 | \n",
" 18.717500 | \n",
" 5.200000 | \n",
" 1.835000 | \n",
" 64.000000 | \n",
" 8.425000 | \n",
" 63.567500 | \n",
" 71.600000 | \n",
" 2335.000000 | \n",
" 87.700000 | \n",
" 87.300000 | \n",
"
\n",
" \n",
" 50% | \n",
" NaN | \n",
" NaN | \n",
" 7790.000000 | \n",
" 28.650000 | \n",
" 8.530000 | \n",
" 2.400000 | \n",
" 72.500000 | \n",
" 18.600000 | \n",
" 97.745000 | \n",
" 91.800000 | \n",
" 7870.000000 | \n",
" 94.700000 | \n",
" 95.100000 | \n",
"
\n",
" \n",
" 75% | \n",
" NaN | \n",
" NaN | \n",
" 24535.250000 | \n",
" 37.752500 | \n",
" 16.687500 | \n",
" 3.905000 | \n",
" 76.000000 | \n",
" 55.975000 | \n",
" 120.805000 | \n",
" 97.850000 | \n",
" 17557.500000 | \n",
" 98.100000 | \n",
" 97.900000 | \n",
"
\n",
" \n",
" max | \n",
" NaN | \n",
" NaN | \n",
" 1390000.000000 | \n",
" 49.990000 | \n",
" 31.920000 | \n",
" 7.580000 | \n",
" 83.000000 | \n",
" 181.600000 | \n",
" 196.410000 | \n",
" 99.800000 | \n",
" 86440.000000 | \n",
" 100.000000 | \n",
" 100.000000 | \n",
"
\n",
" \n",
"
\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": "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\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",
" Country | \n",
" GNI | \n",
" FertilityRate | \n",
"
\n",
" \n",
" \n",
" \n",
" 22 | \n",
" Botswana | \n",
" 14550 | \n",
" 2.71 | \n",
"
\n",
" \n",
" 55 | \n",
" Equatorial Guinea | \n",
" 25620 | \n",
" 5.04 | \n",
"
\n",
" \n",
" 62 | \n",
" Gabon | \n",
" 13740 | \n",
" 4.18 | \n",
"
\n",
" \n",
" 82 | \n",
" Israel | \n",
" 27110 | \n",
" 2.92 | \n",
"
\n",
" \n",
" 87 | \n",
" Kazakhstan | \n",
" 11250 | \n",
" 2.52 | \n",
"
\n",
" \n",
" 130 | \n",
" Panama | \n",
" 14510 | \n",
" 2.52 | \n",
"
\n",
" \n",
" 149 | \n",
" Saudi Arabia | \n",
" 24700 | \n",
" 2.76 | \n",
"
\n",
" \n",
"
\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": "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\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": {}
}
]
}