Pandas, Part 2

Python - Livello Intermedio

Hugo Bowne-Anderson

Data Scientist at DataCamp

brics

import pandas as pd
brics = pd.read_csv("path/to/brics.csv", index_col = 0)
brics
         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
Python - Livello Intermedio

Index and select data

  • Square brackets
  • Advanced methods
    • loc
    • iloc
Python - Livello Intermedio

Column Access [ ]

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics["country"]
BR          Brazil
RU          Russia
IN           India
CH           China
SA    South Africa
Name: country, dtype: object
Python - Livello Intermedio

Column Access [ ]

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
type(brics["country"])
pandas.core.series.Series
  • 1D labelled array
Python - Livello Intermedio

Column Access [ ]

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics[["country"]]
         country
BR        Brazil
RU        Russia
IN         India
CH         China
SA  South Africa
Python - Livello Intermedio

Column Access [ ]

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
type(brics[["country"]])
pandas.core.frame.DataFrame
Python - Livello Intermedio

Column Access [ ]

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics[["country", "capital"]]
         country    capital
BR        Brazil   Brasilia
RU        Russia     Moscow
IN         India  New Delhi
CH         China    Beijing
SA  South Africa   Pretoria
Python - Livello Intermedio

Row Access [ ]

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics[1:4]
   country    capital    area  population
RU  Russia     Moscow  17.100       143.5
IN   India  New Delhi   3.286      1252.0
CH   China    Beijing   9.597      1357.0
Python - Livello Intermedio

Row Access [ ]

         country    capital    area  population 
BR        Brazil   Brasilia   8.516      200.40    * 0 *
RU        Russia     Moscow  17.100      143.50    * 1 *
IN         India  New Delhi   3.286     1252.00    * 2 *
CH         China    Beijing   9.597     1357.00    * 3 *
SA  South Africa   Pretoria   1.221       52.98    * 4 *
brics[1:4]
   country    capital    area  population
RU  Russia     Moscow  17.100       143.5
IN   India  New Delhi   3.286      1252.0
CH   China    Beijing   9.597      1357.0
Python - Livello Intermedio

Discussion [ ]

  • Square brackets: limited functionality
  • Ideally
    • 2D NumPy arrays
    • my_array[rows, columns]
  • pandas
    • loc (label-based)
    • iloc (integer position-based)
Python - Livello Intermedio

Row Access loc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc["RU"]
country       Russia
capital       Moscow
area            17.1
population     143.5
Name: RU, dtype: object
  • Row as pandas Series
Python - Livello Intermedio

Row Access loc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[["RU"]]
   country capital  area  population
RU  Russia  Moscow  17.1       143.5
  • DataFrame
Python - Livello Intermedio

Row Access loc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[["RU", "IN", "CH"]]
   country    capital    area  population
RU  Russia     Moscow  17.100       143.5
IN   India  New Delhi   3.286      1252.0
CH   China    Beijing   9.597      1357.0
Python - Livello Intermedio

Row & Column loc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
   country    capital
RU  Russia     Moscow
IN   India  New Delhi
CH   China    Beijing
Python - Livello Intermedio

Row & Column loc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[:, ["country", "capital"]]
         country    capital
BR        Brazil   Brasilia
RU        Russia     Moscow
IN         India  New Delhi
CH         China    Beijing
SA  South Africa   Pretoria
Python - Livello Intermedio

Recap

  • Square brackets
    • Column access brics[["country", "capital"]]
    • Row access: only through slicing brics[1:4]
  • loc (label-based)
    • Row access brics.loc[["RU", "IN", "CH"]]
    • Column access brics.loc[:, ["country", "capital"]]
    • Row & Column access
      brics.loc[
      ["RU", "IN", "CH"], 
      ["country", "capital"]
      ]
      
Python - Livello Intermedio

Row Access iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[["RU"]]
   country capital  area  population
RU  Russia  Moscow  17.1       143.5
brics.iloc[[1]]
   country capital  area  population
RU  Russia  Moscow  17.1       143.5
Python - Livello Intermedio

Row Access iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[["RU", "IN", "CH"]]
   country    capital    area  population
RU  Russia     Moscow  17.100       143.5
IN   India  New Delhi   3.286      1252.0
CH   China    Beijing   9.597      1357.0
Python - Livello Intermedio

Row Access iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.iloc[[1,2,3]]
   country    capital    area  population
RU  Russia     Moscow  17.100       143.5
IN   India  New Delhi   3.286      1252.0
CH   China    Beijing   9.597      1357.0
Python - Livello Intermedio

Row & Column iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
   country    capital
RU  Russia     Moscow
IN   India  New Delhi
CH   China    Beijing
Python - Livello Intermedio

Row & Column iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.iloc[[1,2,3], [0, 1]]
   country    capital
RU  Russia     Moscow
IN   India  New Delhi
CH   China    Beijing
Python - Livello Intermedio

Row & Column iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.loc[:, ["country", "capital"]]
         country    capital
BR        Brazil   Brasilia
RU        Russia     Moscow
IN         India  New Delhi
CH         China    Beijing
SA  South Africa   Pretoria
Python - Livello Intermedio

Row & Column iloc

         country    capital    area  population
BR        Brazil   Brasilia   8.516      200.40
RU        Russia     Moscow  17.100      143.50
IN         India  New Delhi   3.286     1252.00
CH         China    Beijing   9.597     1357.00
SA  South Africa   Pretoria   1.221       52.98
brics.iloc[:, [0,1]]
         country    capital
BR        Brazil   Brasilia
RU        Russia     Moscow
IN         India  New Delhi
CH         China    Beijing
SA  South Africa   Pretoria
Python - Livello Intermedio

Let's practice!

Python - Livello Intermedio

Preparing Video For Download...