{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Pandas basics" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Pandas series

\n", "

\n", "pandas series is similar to numpy array, But it suppport lots of extra functionality like Pandaseries.describe()\n", "

\n", "

\n", "Basic acces is samilar to numpy arrary, it support access by index( s[5] ) or slicing ( s[5:10] ).
\n", "It also support vectorise operation and looping like numpy array.
\n", "Implemented in C so it works very fast.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Benfits of Pandas series" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "count 5.000000\n", "mean 4.000000\n", "std 1.581139\n", "min 2.000000\n", "25% 3.000000\n", "50% 4.000000\n", "75% 5.000000\n", "max 6.000000\n", "dtype: float64\n" ] } ], "source": [ "s=pd.Series([2,3,4,5,6])\n", "print s.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Pandas Index

\n", "

\n", "Hybrid of list and python Dictionary. It map key value pair.\n", "

" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ram 40\n", "Syam 12\n", "Rahul 43\n", "Ganesh 56\n", "dtype: int64\n" ] } ], "source": [ "sal=pd.Series([40,12,43,56],\n", " index=['Ram',\n", " 'Syam',\n", " \"Rahul\",\n", " \"Ganesh\"])\n", "print sal" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "40\n" ] } ], "source": [ "print sal[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

lookUp by index

" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12\n" ] } ], "source": [ "print sal.loc[\"Syam\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Using sal[position] is not prefered instead prefer to use sal.iloc[position]\n", "becouse Index has different meaning in series so it avoid confusion

" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "56\n" ] } ], "source": [ "print sal.iloc[3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

argmax() function return index of max value element

" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ganesh\n" ] } ], "source": [ "print sal.argmax()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "56\n", "56\n" ] } ], "source": [ "print sal.loc[\"Ganesh\"]\n", "print sal.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding series with Differen index" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 1\n", "b 2\n", "c 3\n", "d 4\n", "dtype: int64\n" ] } ], "source": [ "a=pd.Series([1,2,3,4],\n", " index=[\"a\",\"b\",\"c\",\"d\"])\n", "b=pd.Series([9,8,7,6],\n", " index=[\"c\",\"d\",\"e\",\"f\"])\n", "print a" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c 9\n", "d 8\n", "e 7\n", "f 6\n", "dtype: int64\n" ] } ], "source": [ "print b" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a NaN\n", "b NaN\n", "c 12\n", "d 12\n", "e NaN\n", "f NaN\n", "dtype: float64\n" ] } ], "source": [ "print a+b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

C,D are common in both so added correctly rest are just assign a volue NaN (Not a number)

\n", "

we can modify it such that in case of mismatch original data will assign instead of NaN or drop All NaN

" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c 12\n", "d 12\n", "dtype: float64\n" ] } ], "source": [ "res = (a+b)\n", "print res.dropna()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Treat missing values as 0" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 1\n", "b 2\n", "c 12\n", "d 12\n", "e 7\n", "f 6\n", "dtype: float64\n" ] } ], "source": [ "res=a.add(b,fill_value=0)\n", "print res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "s.apply(function_name) used to apply some operation on each element.\n", "

Example:

\n", "

\n", "adding 5 to each element , we can do this by simply series+5 becouse it is a vector, But lets do using this new techniqe s.apply(function)\n", "

" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 1\n", "b 2\n", "c 12\n", "d 12\n", "e 7\n", "f 6\n", "dtype: float64\n" ] } ], "source": [ "print res" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 6\n", "b 7\n", "c 17\n", "d 17\n", "e 12\n", "f 11\n", "dtype: float64\n" ] } ], "source": [ "print res+5" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def add_5(x):\n", " return x+5" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 6\n", "b 7\n", "c 17\n", "d 17\n", "e 12\n", "f 11\n", "dtype: float64\n" ] } ], "source": [ "print res.apply(add_5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Plotting

\n", "

\n", "automaticaly plot index vs data plot\n", "

" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n7/8D6Rw7mH6uEtYAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%pylab inline\n", "res.plot()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }