Skip to content

Instantly share code, notes, and snippets.

@manujeevanprakash
Created November 1, 2014 05:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save manujeevanprakash/996d18985be612072ee0 to your computer and use it in GitHub Desktop.
Save manujeevanprakash/996d18985be612072ee0 to your computer and use it in GitHub Desktop.
Basics of Pandas
{
"metadata": {
"name": "pandas.ipynb",
"signature": "sha256:a0a225575bcd9081a8c5eb519fd740c0b6a46d6ab6b5a239e22401b0043d7b99"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Pandas\n",
"Pandas contains high level data structures and manipulation tools to make data analysis fast and easy in Python."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd #I am importing pandas as pd\n",
"from pandas import Series, DataFrame # Series and Data Frame are two data structures available in python"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Series\n",
"Series is a one-dimensional array like object containing an array of data(any Numpy data type, and an associated array of data labels, called its index."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mjp= Series([5,4,3,2,1])# a simple series\n",
"print mjp # A series is represented by index on the left and values on the right\n",
"print mjp.values # similar to dictionary. \".values\" command returns values in a series "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0 5\n",
"1 4\n",
"2 3\n",
"3 2\n",
"4 1\n",
"dtype: int64\n",
"[5 4 3 2 1]\n"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print mjp.index # returns the index values of the series"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Int64Index([0, 1, 2, 3, 4], dtype='int64')\n"
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"jeeva = Series([5,4,3,2,1,-7,-29], index =['a','b','c','d','e','f','h']) # The index is specified\n",
"print jeeva # try jeeva.index and jeeva.values\n",
"print jeeva['a'] # selecting a particular value from a Series, by using index"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"a 5\n",
"b 4\n",
"c 3\n",
"d 2\n",
"e 1\n",
"f -7\n",
"h -29\n",
"dtype: int64\n",
"5\n"
]
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"jeeva['d'] = 9 # change the value of a particular element in series\n",
"print jeeva\n",
"jeeva[['a','b','c']] # select a group of values"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"a 5\n",
"b 4\n",
"c 3\n",
"d 9\n",
"e 1\n",
"f -7\n",
"h -29\n",
"dtype: int64\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 28,
"text": [
"a 5\n",
"b 4\n",
"c 3\n",
"dtype: int64"
]
}
],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print jeeva[jeeva>0] # returns only the positive values\n",
"print jeeva *2 # multiplies 2 to each element of a series"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"a 5\n",
"b 4\n",
"c 3\n",
"d 9\n",
"e 1\n",
"dtype: int64\n",
"a 10\n",
"b 8\n",
"c 6\n",
"d 18\n",
"e 2\n",
"f -14\n",
"h -58\n",
"dtype: int64\n"
]
}
],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"np.mean(jeeva) # you can apply numpy functions to a Series"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
"-2.0"
]
}
],
"prompt_number": 34
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print 'b' in jeeva # checks whether the index is present in Series or not\n",
"print 'z' in jeeva"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"True\n",
"False\n"
]
}
],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"player_salary ={'Rooney': 50000, 'Messi': 75000, 'Ronaldo': 85000, 'Fabregas':40000, 'Van persie': 67000} \n",
"new_player = Series(player_salary)# converting a dictionary to a series\n",
"print new_player # the series has keys of a dictionary"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Fabregas 40000\n",
"Messi 75000\n",
"Ronaldo 85000\n",
"Rooney 50000\n",
"Van persie 67000\n",
"dtype: int64\n"
]
}
],
"prompt_number": 46
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"players =['Klose', 'Messi', 'Ronaldo', 'Van persie', 'Ballack'] \n",
"player_1 =Series(player_salary, index= players)\n",
"print player_1 # I have changed the index of the Series. Since, no value was not found for Klose and Ballack, it appears as NAN"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Klose NaN\n",
"Messi 75000\n",
"Ronaldo 85000\n",
"Van persie 67000\n",
"Ballack NaN\n",
"dtype: float64\n"
]
}
],
"prompt_number": 49
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pd.isnull(player_1)#checks for Null values in player_1, pd denotes a pandas dataframe"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 53,
"text": [
"Klose True\n",
"Messi False\n",
"Ronaldo False\n",
"Van persie False\n",
"Ballack True\n",
"dtype: bool"
]
}
],
"prompt_number": 53
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pd.notnull(player_1)# Checks for null values that are not Null"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 52,
"text": [
"Klose False\n",
"Messi True\n",
"Ronaldo True\n",
"Van persie True\n",
"Ballack False\n",
"dtype: bool"
]
}
],
"prompt_number": 52
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"player_1.name ='Bundesliga players' # name for the Series\n",
"player_1.index.name='Player names' #name of the index\n",
"player_1"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 64,
"text": [
"Player names\n",
"Klose NaN\n",
"Messi 75000\n",
"Ronaldo 85000\n",
"Van persie 67000\n",
"Ballack NaN\n",
"Name: Bundesliga players, dtype: float64"
]
}
],
"prompt_number": 64
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"player_1.index =['Neymar', 'Hulk', 'Pirlo', 'Buffon', 'Anderson'] # is used to alter the index of Series\n",
"player_1 "
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 67,
"text": [
"Neymar NaN\n",
"Hulk 75000\n",
"Pirlo 85000\n",
"Buffon 67000\n",
"Anderson NaN\n",
"Name: Bundesliga players, dtype: float64"
]
}
],
"prompt_number": 67
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Data Frame\n",
"Data frame is a spread sheet like structure, containing ordered collection of columns. Each column can have different value type.\n",
"Data frame has both row index and column index."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"states ={'State' :['Gujarat', 'Tamil Nadu', ' Andhra', 'Karnataka', 'Kerala'],\n",
" 'Population': [36, 44, 67,89,34],\n",
" 'Language' :['Gujarati', 'Tamil', 'Telugu', 'Kannada', 'Malayalam']}\n",
"india = DataFrame(states) # creating a data frame\n",
"india"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" <th>State</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" <td> Gujarat</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" <td> Tamil Nadu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" <td> Andhra</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" <td> Karnataka</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" <td> Kerala</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 74,
"text": [
" Language Population State\n",
"0 Gujarati 36 Gujarat\n",
"1 Tamil 44 Tamil Nadu\n",
"2 Telugu 67 Andhra\n",
"3 Kannada 89 Karnataka\n",
"4 Malayalam 34 Kerala"
]
}
],
"prompt_number": 74
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"DataFrame(states, columns=['State', 'Language', 'Population']) # change the sequence of column index"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Andhra</td>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Karnataka</td>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> Kerala</td>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 75,
"text": [
" State Language Population\n",
"0 Gujarat Gujarati 36\n",
"1 Tamil Nadu Tamil 44\n",
"2 Andhra Telugu 67\n",
"3 Karnataka Kannada 89\n",
"4 Kerala Malayalam 34"
]
}
],
"prompt_number": 75
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_farme = DataFrame(states, columns=['State', 'Language', 'Population', 'Per Capita Income'], index =['a','b','c','d','e'])\n",
"#if you pass a column that isnt in states, it will appear with Na values"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 82
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print new_farme.columns\n",
"print new_farme['State'] # retrieveing data like dictionary"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Index([u'State', u'Language', u'Population', u'Per Capita Income'], dtype='object')\n",
"a Gujarat\n",
"b Tamil Nadu\n",
"c Andhra\n",
"d Karnataka\n",
"e Kerala\n",
"Name: State, dtype: object\n"
]
}
],
"prompt_number": 86
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_farme.Population # like Series"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 89,
"text": [
"a 36\n",
"b 44\n",
"c 67\n",
"d 89\n",
"e 34\n",
"Name: Population, dtype: int64"
]
}
],
"prompt_number": 89
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_farme.ix[3] # rows can be retrieved using .ic function\n",
"# here I have retrieved 3rd row"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 91,
"text": [
"State Karnataka\n",
"Language Kannada\n",
"Population 89\n",
"Per Capita Income NaN\n",
"Name: d, dtype: object"
]
}
],
"prompt_number": 91
},
{
"cell_type": "code",
"collapsed": false,
"input": [
" new_farme"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" <th>Per Capita Income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> Andhra</td>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td> Karnataka</td>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>e</th>\n",
" <td> Kerala</td>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 94,
"text": [
" State Language Population Per Capita Income\n",
"a Gujarat Gujarati 36 NaN\n",
"b Tamil Nadu Tamil 44 NaN\n",
"c Andhra Telugu 67 NaN\n",
"d Karnataka Kannada 89 NaN\n",
"e Kerala Malayalam 34 NaN"
]
}
],
"prompt_number": 94
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_farme['Per Capita Income'] = 99 # the empty per capita income column can be assigned a value\n",
"new_farme"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" <th>Per Capita Income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" <td> 99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" <td> 99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> Andhra</td>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" <td> 99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td> Karnataka</td>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" <td> 99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>e</th>\n",
" <td> Kerala</td>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" <td> 99</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 97,
"text": [
" State Language Population Per Capita Income\n",
"a Gujarat Gujarati 36 99\n",
"b Tamil Nadu Tamil 44 99\n",
"c Andhra Telugu 67 99\n",
"d Karnataka Kannada 89 99\n",
"e Kerala Malayalam 34 99"
]
}
],
"prompt_number": 97
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_farme['Per Capita Income'] = np.arange(5) # assigning a value to the last column\n",
"new_farme"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" <th>Per Capita Income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" <td> 0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" <td> 1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> Andhra</td>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" <td> 2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td> Karnataka</td>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>e</th>\n",
" <td> Kerala</td>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" <td> 4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 99,
"text": [
" State Language Population Per Capita Income\n",
"a Gujarat Gujarati 36 0\n",
"b Tamil Nadu Tamil 44 1\n",
"c Andhra Telugu 67 2\n",
"d Karnataka Kannada 89 3\n",
"e Kerala Malayalam 34 4"
]
}
],
"prompt_number": 99
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"series = Series([44,33,22], index =['b','c','d'])\n",
"new_farme['Per Capita Income'] = series\n",
"#when assigning list or arrays to a column, the values lenght should match the length of the DataFrame\n",
"new_farme # again the missing values are displayed as NAN"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" <th>Per Capita Income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" <td> 44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> Andhra</td>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" <td> 33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td> Karnataka</td>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" <td> 22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>e</th>\n",
" <td> Kerala</td>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 104,
"text": [
" State Language Population Per Capita Income\n",
"a Gujarat Gujarati 36 NaN\n",
"b Tamil Nadu Tamil 44 44\n",
"c Andhra Telugu 67 33\n",
"d Karnataka Kannada 89 22\n",
"e Kerala Malayalam 34 NaN"
]
}
],
"prompt_number": 104
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_farme['Development'] = new_farme.State == 'Gujarat'# assigning a new column\n",
"print new_farme\n",
"del new_farme['Development'] # will delete the column 'Development'\n",
"new_farme"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" State Language Population Per Capita Income Development\n",
"a Gujarat Gujarati 36 NaN True\n",
"b Tamil Nadu Tamil 44 44 False\n",
"c Andhra Telugu 67 33 False\n",
"d Karnataka Kannada 89 22 False\n",
"e Kerala Malayalam 34 NaN False\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" <th>Population</th>\n",
" <th>Per Capita Income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" <td> 36</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" <td> 44</td>\n",
" <td> 44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> Andhra</td>\n",
" <td> Telugu</td>\n",
" <td> 67</td>\n",
" <td> 33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td> Karnataka</td>\n",
" <td> Kannada</td>\n",
" <td> 89</td>\n",
" <td> 22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>e</th>\n",
" <td> Kerala</td>\n",
" <td> Malayalam</td>\n",
" <td> 34</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 119,
"text": [
" State Language Population Per Capita Income\n",
"a Gujarat Gujarati 36 NaN\n",
"b Tamil Nadu Tamil 44 44\n",
"c Andhra Telugu 67 33\n",
"d Karnataka Kannada 89 22\n",
"e Kerala Malayalam 34 NaN"
]
}
],
"prompt_number": 119
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"new_data ={'Modi': {2010: 72, 2012: 78, 2014 : 98},'Rahul': {2010: 55, 2012: 34, 2014: 22}}\n",
"elections = DataFrame(new_data) \n",
"print elections# the outer dict keys are columns and inner dict keys are rows\n",
"elections.T # transpose of a data frame"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Modi Rahul\n",
"2010 72 55\n",
"2012 78 34\n",
"2014 98 22\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>2010</th>\n",
" <th>2012</th>\n",
" <th>2014</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Modi</th>\n",
" <td> 72</td>\n",
" <td> 78</td>\n",
" <td> 98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rahul</th>\n",
" <td> 55</td>\n",
" <td> 34</td>\n",
" <td> 22</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
" 2010 2012 2014\n",
"Modi 72 78 98\n",
"Rahul 55 34 22"
]
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"DataFrame(new_data, index =[2012, 2014, 2016]) # you can assign index for the data frame"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Modi</th>\n",
" <th>Rahul</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td> 78</td>\n",
" <td> 34</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td> 98</td>\n",
" <td> 22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 17,
"text": [
" Modi Rahul\n",
"2012 78 34\n",
"2014 98 22\n",
"2016 NaN NaN"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ex= {'Gujarat':elections['Modi'][:-1], 'India': elections['Rahul'][:2]}\n",
"px =DataFrame(ex)\n",
"px"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Gujarat</th>\n",
" <th>India</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td> 72</td>\n",
" <td> 55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td> 78</td>\n",
" <td> 34</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
" Gujarat India\n",
"2010 72 55\n",
"2012 78 34"
]
}
],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import Image\n",
"i = Image(filename='Constructors.png')\n",
"i # list of things you can pass to a dataframe"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAEVCAYAAADUyC7YAAAAAXNSR0IArs4c6QAAAARnQU1BAACx\njwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAFecSURBVHhe7Z29jmxLUrbnnrC4Bkxs/LG4gCNx\nAQgfaVwcHMwj4Q4uwkTCwRkDDxd7vu/ZZ57Z746TuWpVd1X36u73kVIZmRkRGfmzcmXVPqfrN38s\npZRSSrkIv/mf//mfPzY1NTU1NTU1XSH1YtLU1NTU1NR0mdSLSVNTU1NTU9NlUi8mTU1NTU1NTZdJ\nvZg0NTU1NTU1XSb1YtLU1NTU1NR0mdSLSVNTU1NTU9NlUi8mTU1NTU1NTZdJvZg0NTU1NTU1XSad\nupj8/d///R9/85vf/JD+9V//danb1HQm/dM//dO3ffTv//7vP5SnXlNTU1PT10qnLib/8i//8ufL\nyV/8xV98k32hNDW9JHkRYS9leepl+s///M9vequ2pqampqbPke76pxxeHH/7t3+7bGtquid5EeGi\n+9///d+nLibsvVs6TU1NTU0fO734YvJXf/VX3xKy36akDi+cv/mbv/n2KZd6/ukHfer7qbeJPcBe\nYL/wjVxeTLio/N3f/d23dvZSXlxM//Zv/7bcU9Rbh5x9NjU1NTVdP734YuJlhJcGFxCSOqR//Md/\n/JbzguGffZCxsb4vja+dvGiwn9g7eTFxb3Fhcd9wwUXPvbPbU1xK8Ikte3P229TU1NR07fTiiwmf\nVn0Z8OmUl8PU4UVCW15i1FG/6WsmLyLuIy6w5LRxufCi6x5CZl+ps9tT6GLvN3VNTU1NTR8rvfhi\nwguBsi8IvwFJHV8k5pmw02/T10v5DQmXCZJl8rmHdnIm9hQXHf31ctLU1NT08dKr/uNXP81Sn59c\n1bHdT8NcXkx9aXztlBcT/ynGMnsmvzHhGxDkvJgc7Sn/maffyjU1NTV9vPSqi4kvFF8i6vhSIPdT\nLDIvE14glPvv/1875cWEC4X7hrLfwuV/Y0K9lxH21m5P4de2XkyampqaPl561cWEF8J8AVD2/4rg\nwuIFhBcG9bb376B87ZQXE1J+G8Keoey3be4h9kx+Q7faU+w5ymnX1NTU1PRx0l0Xk5l8ueQlg3Je\nXpqampqampqazqYXX0z4tsRPtFnfi0lTU1NTU1PTS9OLLyb8803+U42pF5Ompqampqaml6YXX0z6\n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\nWb+zV8668mtyLiHLyq4Tn8ZW5Bx/5H3gIZxopw9QnvOirvnEDxbMCSD74SLhGafNZx1uzeU9a5Ry\n9kU+48m6tJOsUyYhQ8q2H8U618DLnKTtrX5S3vW50k3S706W7IOEbN3sI+smc8yuvT6nr6P5BPsD\nLyO7Zw/mGlieepB12U/5+JxaybnofMrhFg25OZRpI7FZyfNT0dRNGV0+mXkosoGpp31CXX7VPi9K\nucF9APCn7GE4Y5DsN+3T785eeTWe8p2cY8hyyrxUXV/nUtD5yPuAZ4T67Ee0z7aUyYnDA3/XF/XM\nobY+lyT7B8aHPjrWgb5zzBkHuEb4y/EBbXmxIZ99reKhzNnhvGOXrPwqQ8ppP2O1T/XpD9DRXvST\nbbt+UrZPcHzZzliPzr6Ucx8m9MEaoYsM2Yfyqq/dmJHxOdcg5dXYBB10sfe9oS909TPXYJZXMVuH\nLr7RK5+DUyvJw88GkHkou6mV2TToUyb3AfI27kE67dhgbDbKJPTdxBN1uNETjxib/QN+LbuheZgo\nzxhk9uvGT787e+XVeMp35hxnecqsM2XyhDrrP+I+0D/Jg160VwdS9tB2bnZ9+eKgjTrmJp9R59S5\nmPt0NZcZB1A2jmm/inP2tYqHlxB6aZes/GZcKac9ecaqHgmftpHPb3HsczcX5PaTcvZJDtm+Wrf0\nm/Lcx4IO80XSLzpTXvW1G7Nrb/vKL/kcmzhfxuXFYj57JGQSNrO8ihlf9mtb+Rx0JUsppTwFLyal\n3EN3TCmllKfQi0l5Cd0xpZRSnoL/JFPKPXTHlFJKKeUy9GJSSimllMvQi0kppZRSLkMvJqWUUkq5\nDL2YlFJKKeUy9GJSSimllMvQi0kppZRSLkMvJqWUUkq5DL2YlFJKKeUy9GJSyifBH3TLH3YrpZSP\nxumLCX9W2F9vfcSfGfaXJUn8Uqa/OnkEevnrlf5aqj+5fQb0if8sc6z8qiVl+i4v59Yeuned5CV7\nkz3lL5XuwCeJfcsvDN+7/i8dz1n8xW72J89J+ZGX7IuXrtmj1volMT8LY/GcnmPcnYvoX2UML+Xe\ndVCfxHlxz/tpRfojvdbfW3HvvCWnrejAA+8RP8yEPX74dMdPVp85TNHBzs3vYXzvxYR+zzLH6s9s\n50NZ7me1h6jjQYaXrJP59HsE+uwr9hCHK/gT6sTiOhsPZfYAl5N7uHc890L8xMRY/ADxEWF+n/GN\n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\nRnL43Uqx6OAAAAAASUVORK5CYII=\n",
"prompt_number": 150,
"text": [
"<IPython.core.display.Image at 0x5753470>"
]
}
],
"prompt_number": 150
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"px.index.name = 'year'\n",
"px.columns.name = 'politicians'\n",
"px"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>politicians</th>\n",
" <th>Gujarat</th>\n",
" <th>India</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2010</th>\n",
" <td> 72</td>\n",
" <td> 55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012</th>\n",
" <td> 78</td>\n",
" <td> 34</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 155,
"text": [
"politicians Gujarat India\n",
"year \n",
"2010 72 55\n",
"2012 78 34"
]
}
],
"prompt_number": 155
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"px.values"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 156,
"text": [
"array([[72, 55],\n",
" [78, 34]], dtype=int64)"
]
}
],
"prompt_number": 156
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"jeeva = Series([5,4,3,2,1,-7,-29], index =['a','b','c','d','e','f','h'])\n",
"index = jeeva.index\n",
"print index #u denotes unicode\n",
"print index[1:]# returns all the index elements except a. \n",
"index[1] = 'f' # you cannot modify an index element. It will generate an error. In other words, they are immutable"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "'<class 'pandas.core.index.Index'>' does not support mutable operations.",
"output_type": "pyerr",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-3-e8b7ee2d0552>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[0mindex\u001b[0m \u001b[1;31m#u denotes unicode\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mprint\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;31m# returns all the index elements except a.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mindex\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'f'\u001b[0m \u001b[1;31m# you cannot modify an index element. It will generate an error. In other words, they are immutable\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mC:\\Users\\tk\\AppData\\Local\\Enthought\\Canopy32\\User\\lib\\site-packages\\pandas\\core\\base.pyc\u001b[0m in \u001b[0;36m_disabled\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 177\u001b[0m \u001b[1;34m\"\"\"This method will not function because object is immutable.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 178\u001b[0m raise TypeError(\"'%s' does not support mutable operations.\" %\n\u001b[1;32m--> 179\u001b[1;33m self.__class__)\n\u001b[0m\u001b[0;32m 180\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 181\u001b[0m \u001b[0m__setitem__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m__setslice__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m__delitem__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m__delslice__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_disabled\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mTypeError\u001b[0m: '<class 'pandas.core.index.Index'>' does not support mutable operations."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Index([u'a', u'b', u'c', u'd', u'e', u'f', u'h'], dtype='object')\n",
"Index([u'b', u'c', u'd', u'e', u'f', u'h'], dtype='object')\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print px\n",
"2013 in px.index # checks if 2003 is an index in data frame px"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" Gujarat India\n",
"2010 72 55\n",
"2012 78 34\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
"False"
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Reindex"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"var = Series(['Python', 'Java', 'c', 'c++', 'Php'], index =[5,4,3,2,1])\n",
"print var\n",
"var1 = var.reindex([1,2,3,4,5])# reindex creates a new object \n",
"print var1 "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"5 Python\n",
"4 Java\n",
"3 c\n",
"2 c++\n",
"1 Php\n",
"dtype: object\n",
"1 Php\n",
"2 c++\n",
"3 c\n",
"4 Java\n",
"5 Python\n",
"dtype: object\n"
]
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"var.reindex([1,2,3,4,5,6,7])# introduces new indexes with values Nan"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 28,
"text": [
"1 Php\n",
"2 c++\n",
"3 c\n",
"4 Java\n",
"5 Python\n",
"6 NaN\n",
"7 NaN\n",
"dtype: object"
]
}
],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"var.reindex([1,2,3,4,5,6,7], fill_value =1) # you can use fill value to fill the Nan values. Here I have used fill value as 1. You can use any value."
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 31,
"text": [
"1 Php\n",
"2 c++\n",
"3 c\n",
"4 Java\n",
"5 Python\n",
"6 1\n",
"7 1\n",
"dtype: object"
]
}
],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"gh =Series(['Dhoni', 'Sachin', 'Kohli'], index =[0,2,4])\n",
"print gh\n",
"gh.reindex(range(6), method ='ffill') #ffill is forward fill. It forward fills the values"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0 Dhoni\n",
"2 Sachin\n",
"4 Kohli\n",
"dtype: object\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 35,
"text": [
"0 Dhoni\n",
"1 Dhoni\n",
"2 Sachin\n",
"3 Sachin\n",
"4 Kohli\n",
"5 Kohli\n",
"dtype: object"
]
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"gh.reindex(range(6), method ='bfill')# bfill, backward fills the values"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 36,
"text": [
"0 Dhoni\n",
"1 Sachin\n",
"2 Sachin\n",
"3 Kohli\n",
"4 Kohli\n",
"5 NaN\n",
"dtype: object"
]
}
],
"prompt_number": 36
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"fp = DataFrame(np.arange(9).reshape((3,3)),index =['a','b','c'], columns =['Gujarat','Tamil Nadu', 'Kerala'])\n",
"fp"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Gujarat</th>\n",
" <th>Tamil Nadu</th>\n",
" <th>Kerala</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> 0</td>\n",
" <td> 1</td>\n",
" <td> 2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> 3</td>\n",
" <td> 4</td>\n",
" <td> 5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> 6</td>\n",
" <td> 7</td>\n",
" <td> 8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 45,
"text": [
" Gujarat Tamil Nadu Kerala\n",
"a 0 1 2\n",
"b 3 4 5\n",
"c 6 7 8"
]
}
],
"prompt_number": 45
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fp1 =fp.reindex(['a', 'b', 'c', 'd'], columns = states) # reindexing columns and indices\n",
"fp1"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Gujarat</th>\n",
" <th>Assam</th>\n",
" <th>Kerala</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> 0</td>\n",
" <td>NaN</td>\n",
" <td> 2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> 3</td>\n",
" <td>NaN</td>\n",
" <td> 5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> 6</td>\n",
" <td>NaN</td>\n",
" <td> 8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 55,
"text": [
" Gujarat Assam Kerala\n",
"a 0 NaN 2\n",
"b 3 NaN 5\n",
"c 6 NaN 8\n",
"d NaN NaN NaN"
]
}
],
"prompt_number": 55
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Other Reindexing arguments <br>\n",
"<b>limit</b> When forward- or backfilling, maximum size gap to fill<br>\n",
"<b>level</b> Match simple Index on level of MultiIndex, otherwise select subset of <br>\n",
"<b>copy</b> Do not copy underlying data if new index is equivalent to old index. True by default (i.e. always copy data)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Dropping entries from an axis"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"er = Series(np.arange(5), index =['a','b','c','d','e'])\n",
"print er\n",
"er.drop(['a','b']) #drop method will return a new object with values deleted from an axis"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"a 0\n",
"b 1\n",
"c 2\n",
"d 3\n",
"e 4\n",
"dtype: int32\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 62,
"text": [
"c 2\n",
"d 3\n",
"e 4\n",
"dtype: int32"
]
}
],
"prompt_number": 62
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"states ={'State' :['Gujarat', 'Tamil Nadu', ' Andhra', 'Karnataka', 'Kerala'],\n",
" 'Population': [36, 44, 67,89,34],\n",
" 'Language' :['Gujarati', 'Tamil', 'Telugu', 'Kannada', 'Malayalam']}\n",
"india = DataFrame(states, columns =['State', 'Population', 'Language'])\n",
"print india\n",
"india.drop([0,1])# will drop index 0 and 1"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" State Population Language\n",
"0 Gujarat 36 Gujarati\n",
"1 Tamil Nadu 44 Tamil\n",
"2 Andhra 67 Telugu\n",
"3 Karnataka 89 Kannada\n",
"4 Kerala 34 Malayalam\n"
]
},
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Population</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Andhra</td>\n",
" <td> 67</td>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Karnataka</td>\n",
" <td> 89</td>\n",
" <td> Kannada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> Kerala</td>\n",
" <td> 34</td>\n",
" <td> Malayalam</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 77,
"text": [
" State Population Language\n",
"2 Andhra 67 Telugu\n",
"3 Karnataka 89 Kannada\n",
"4 Kerala 34 Malayalam"
]
}
],
"prompt_number": 77
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"india.drop(['State', 'Population'], axis =1 )# the function dropped population and state columns. Apply the same concept with axis =0"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Gujarati</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Tamil</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Kannada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> Malayalam</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 82,
"text": [
" Language\n",
"0 Gujarati\n",
"1 Tamil\n",
"2 Telugu\n",
"3 Kannada\n",
"4 Malayalam"
]
}
],
"prompt_number": 82
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Selection, Indexing and Filtering"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"var = Series(['Python', 'Java', 'c', 'c++', 'Php'], index =[5,4,3,2,1])\n",
"var"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 102,
"text": [
"5 Python\n",
"4 Java\n",
"3 c\n",
"2 c++\n",
"1 Php\n",
"dtype: object"
]
}
],
"prompt_number": 102
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print var[5]\n",
"print var[2:4]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Python\n",
"3 c\n",
"2 c++\n",
"dtype: object\n"
]
}
],
"prompt_number": 103
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"var[[3,2,1]]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 104,
"text": [
"3 c\n",
"2 c++\n",
"1 Php\n",
"dtype: object"
]
}
],
"prompt_number": 104
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"var[var == 'Php']"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 109,
"text": [
"1 Php\n",
"dtype: object"
]
}
],
"prompt_number": 109
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"states ={'State' :['Gujarat', 'Tamil Nadu', ' Andhra', 'Karnataka', 'Kerala'],\n",
" 'Population': [36, 44, 67,89,34],\n",
" 'Language' :['Gujarati', 'Tamil', 'Telugu', 'Kannada', 'Malayalam']}\n",
"india = DataFrame(states, columns =['State', 'Population', 'Language'])\n",
"india"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Population</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Gujarat</td>\n",
" <td> 36</td>\n",
" <td> Gujarati</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> 44</td>\n",
" <td> Tamil</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Andhra</td>\n",
" <td> 67</td>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Karnataka</td>\n",
" <td> 89</td>\n",
" <td> Kannada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> Kerala</td>\n",
" <td> 34</td>\n",
" <td> Malayalam</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 111,
"text": [
" State Population Language\n",
"0 Gujarat 36 Gujarati\n",
"1 Tamil Nadu 44 Tamil\n",
"2 Andhra 67 Telugu\n",
"3 Karnataka 89 Kannada\n",
"4 Kerala 34 Malayalam"
]
}
],
"prompt_number": 111
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"india[['Population', 'Language']] # retrieve data from data frame"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Population</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 36</td>\n",
" <td> Gujarati</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 44</td>\n",
" <td> Tamil</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 67</td>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 89</td>\n",
" <td> Kannada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 34</td>\n",
" <td> Malayalam</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 114,
"text": [
" Population Language\n",
"0 36 Gujarati\n",
"1 44 Tamil\n",
"2 67 Telugu\n",
"3 89 Kannada\n",
"4 34 Malayalam"
]
}
],
"prompt_number": 114
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"india[india['Population'] > 50] # returns data for population greater than 50"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Population</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Andhra</td>\n",
" <td> 67</td>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> Karnataka</td>\n",
" <td> 89</td>\n",
" <td> Kannada</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 115,
"text": [
" State Population Language\n",
"2 Andhra 67 Telugu\n",
"3 Karnataka 89 Kannada"
]
}
],
"prompt_number": 115
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"india[:3] # first three rows"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Population</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> Gujarat</td>\n",
" <td> 36</td>\n",
" <td> Gujarati</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> 44</td>\n",
" <td> Tamil</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> Andhra</td>\n",
" <td> 67</td>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 117,
"text": [
" State Population Language\n",
"0 Gujarat 36 Gujarati\n",
"1 Tamil Nadu 44 Tamil\n",
"2 Andhra 67 Telugu"
]
}
],
"prompt_number": 117
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# for selecting specific rows and columns, you can use ix function\n",
"import pandas as pd\n",
"states ={'State' :['Gujarat', 'Tamil Nadu', ' Andhra', 'Karnataka', 'Kerala'],\n",
" 'Population': [36, 44, 67,89,34],\n",
" 'Language' :['Gujarati', 'Tamil', 'Telugu', 'Kannada', 'Malayalam']}\n",
"india = DataFrame(states, columns =['State', 'Population', 'Language'], index =['a', 'b', 'c', 'd', 'e'])\n",
"india"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Population</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> 36</td>\n",
" <td> Gujarati</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> 44</td>\n",
" <td> Tamil</td>\n",
" </tr>\n",
" <tr>\n",
" <th>c</th>\n",
" <td> Andhra</td>\n",
" <td> 67</td>\n",
" <td> Telugu</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td> Karnataka</td>\n",
" <td> 89</td>\n",
" <td> Kannada</td>\n",
" </tr>\n",
" <tr>\n",
" <th>e</th>\n",
" <td> Kerala</td>\n",
" <td> 34</td>\n",
" <td> Malayalam</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
" State Population Language\n",
"a Gujarat 36 Gujarati\n",
"b Tamil Nadu 44 Tamil\n",
"c Andhra 67 Telugu\n",
"d Karnataka 89 Kannada\n",
"e Kerala 34 Malayalam"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"india.ix[['a','b'], ['State','Language']] # this is how you select subset of rows"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>State</th>\n",
" <th>Language</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>a</th>\n",
" <td> Gujarat</td>\n",
" <td> Gujarati</td>\n",
" </tr>\n",
" <tr>\n",
" <th>b</th>\n",
" <td> Tamil Nadu</td>\n",
" <td> Tamil</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 128,
"text": [
" State Language\n",
"a Gujarat Gujarati\n",
"b Tamil Nadu Tamil"
]
}
],
"prompt_number": 128
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment