SlideShare a Scribd company logo
ITA FRA 2011
2012
2013
DEU 2011
2012
2013
USA CHN 2011
2012
XER MER YEAR
(ITA,FRA,2011)
(ITA,FRA,2012)
(ITA,FRA,2013)
(ITA,DEU,2011)
(ITA,DEU,2012)
(ITA,DEU,2013)
(USA,CHN,2011)
(USA,CHN,2012)
[
]
Un oggetto Multindex può essere pensato come
una lista di tuple, ciascuna che identifica una riga In pandas viene gestito
attraverso un oggetto
composto fatto di:
una lista di names
una lista di levels
(lista degli identificativi
associati ai vari names)
una lista di labels
(lista delle posizioni assunte
dagli elementi dei levels)
Tramite metodo della classe MultiIndex
pandas.MultiIndex.from_tuples ( lista di tuple)
pandas.MultiIndex.from_array ( lista di array)
pandas.MultiIndex.from_product (
lista degli insiemi (liste) di cui viene
calcolato il prodotto cartesiano)
[‘a’,’b’]
[1, 2]
(‘a’,1)
(‘a’,2)
(‘b’,1)
ITA FRA 2011
ITA FRA 2012
ITA FRA 2013
ITA DEU 2011
ITA DEU 2012
ITA DEU 2013
USA CHN 2011
USA CHN 2012
(‘b’,2)
Tramite metodo .set_index della classe
DataFrame
XER MER YEAR
ITA FRA 2011
2012
2013
DEU 2011
2012
2013
USA CHN 2011
2012
XER MER YEAR
DF.set_index([‘XER’,MER’,’YEAR])
DF piatto
ITA FRA 2011 765 234
ITA FRA 2012 743 256
ITA FRA 2013 845 342
ITA DEU 2011 829 333
ITA DEU 2012 876 321
ITA DEU 2013 982 434
USA CHN 2011 895 377
USA CHN 2012 895 354
XER MER YEAR V Q
ITA FRA 2011
2012
2013
DEU 2011
2012
2013
USA CHN 2011
2012
XER MER YEAR
set_index(...)
765 234
743 256
845 342
829 333
876 321
982 434
895 377
895 354
V Q
DF.columns [‘XER’,’MER’,’YEAR’,’V’,’Q’] DF.columns [‘’V’,’Q’]
DF con MultiIndex
Molti metodi della classe DataFrame operano sulle colonne
ITA FRA 2011
2012
2013
DEU 2011
2012
2013
USA CHN 2011
2012
XER MER YEAR
.loc [ selezione righe , selezione colonne ]
.loc[idx[:, :, [‘2010,‘2011‘,’2012’], ]
ITA FRA 2011
2012
DEU 2011
2012
USA CHN 2011
2012
XER MER YEAR
vuoto per
selezionare
tutte le
colonne
tramite
operatore
idx
from pandas import IndexSlice as idx .sortlevel(inplace=True)
ITA FRA 2011
2012
2013
DEU 2011
2012
2013
USA CHN 2011
2012
XER MER YEAR
.loc[‘ITA’,’FRA’]
.loc [ selezione righe , selezione colonne ]
.loc[(‘ITA’,’FRA’, slice(None)) , ]
.loc[idx[‘ITA’,’FRA’, : ] , ]
2011
2012
2013
YEAR
ITA FRA 2011
2011
2011
XER MER YEAR
.loc(axis=0) [‘ITA’,’FRA’,:]
.loc(axis=0)[‘ITA’,’FRA’]
solo righe. Non necessaria virgola finale
ITA FRA 2011
2012
2013
DEU 2011
2012
2013
USA CHN 2011
2012
XER MER YEAR
.loc[‘ITA’,’FRA’]
.loc [ selezione righe , selezione colonne ]
.loc[(‘ITA’,’FRA’, slice(None)),]
from pandas import IndexSlice ad idx
.loc[idx[‘ITA’,’FRA’,:],]
ITA FRA 2011
2012
2013
XER MER YEAR
.loc[(slice(None), slice(None), ‘2011‘),]
.loc[idx[:, :, ‘2011‘],] ITA FRA 2011
DEU 2011
USA CHN 2011
XER MER YEAR
.loc(axis=0)[idx[‘ITA’,’FRA’,:]]
.sortlevel(inplace=True)
.loc(axis=0)[idx[:, :, ‘2011‘]]
.loc(axis=0)[‘ITA’,’FRA’,:]
.loc(axis=0)[:, :, ‘2011‘]
.loc(axis=0)[slice(None),Slice(None)‘2011‘]
.loc [ selezione righe , selezione colonne ]
DFI.loc [ idx[:, ['ITA','FRA'] , ['KOR','GBR'] ], [ 'Q', 'X' ] ]
.isin() .isin()
.loc(axis=0) [ idx ['2010':'2012', 'ITA', : , 'HH':'HM'] ]
periodo dal 2010
al 2012
esportatore
Italia
tutti i
partner
fasce alte
di prezzo
.loc(axis=0) [ idx['2002' : '2006' : 2, 'DEU' , 'USA' ] ]
passo
.index.get_level_values('XER') lista valori di XER
.index.lexsort_depth livello ordinamento
.sortlevel(inplace=True) sort
.unstack(level=....)
.swaplevel(0, 1 , axis=0 ) inverte livello 0 e 1
da indice riga a indice colonna
.stack(level=....) da indice colonna a indice riga
Strutture dati 07-multiindex
Strutture dati 07-multiindex
Strutture dati 07-multiindex

More Related Content

More from Studiabo

Ravenna2019 - lezione Big Data
Ravenna2019 - lezione Big DataRavenna2019 - lezione Big Data
Ravenna2019 - lezione Big Data
Studiabo
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshape
Studiabo
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframe
Studiabo
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
Studiabo
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltin
Studiabo
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltin
Studiabo
 
Strutture dati 01-numeristringhe
Strutture dati 01-numeristringheStrutture dati 01-numeristringhe
Strutture dati 01-numeristringhe
Studiabo
 
Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019
Studiabo
 
Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018
Studiabo
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshape
Studiabo
 
Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018
Studiabo
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltin
Studiabo
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandas
Studiabo
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframe
Studiabo
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
Studiabo
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltin
Studiabo
 
Strutture dati 01-numeristringhe
Strutture dati 01-numeristringheStrutture dati 01-numeristringhe
Strutture dati 01-numeristringhe
Studiabo
 
Strutture dati 00-corso2018
Strutture dati 00-corso2018Strutture dati 00-corso2018
Strutture dati 00-corso2018
Studiabo
 
Data mining 00-corso2017
Data mining 00-corso2017Data mining 00-corso2017
Data mining 00-corso2017
Studiabo
 
Data mining 05-numpypandas
Data mining 05-numpypandasData mining 05-numpypandas
Data mining 05-numpypandas
Studiabo
 

More from Studiabo (20)

Ravenna2019 - lezione Big Data
Ravenna2019 - lezione Big DataRavenna2019 - lezione Big Data
Ravenna2019 - lezione Big Data
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshape
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframe
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltin
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltin
 
Strutture dati 01-numeristringhe
Strutture dati 01-numeristringheStrutture dati 01-numeristringhe
Strutture dati 01-numeristringhe
 
Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019
 
Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshape
 
Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltin
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandas
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframe
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltin
 
Strutture dati 01-numeristringhe
Strutture dati 01-numeristringheStrutture dati 01-numeristringhe
Strutture dati 01-numeristringhe
 
Strutture dati 00-corso2018
Strutture dati 00-corso2018Strutture dati 00-corso2018
Strutture dati 00-corso2018
 
Data mining 00-corso2017
Data mining 00-corso2017Data mining 00-corso2017
Data mining 00-corso2017
 
Data mining 05-numpypandas
Data mining 05-numpypandasData mining 05-numpypandas
Data mining 05-numpypandas
 

Strutture dati 07-multiindex

  • 1.
  • 2. ITA FRA 2011 2012 2013 DEU 2011 2012 2013 USA CHN 2011 2012 XER MER YEAR (ITA,FRA,2011) (ITA,FRA,2012) (ITA,FRA,2013) (ITA,DEU,2011) (ITA,DEU,2012) (ITA,DEU,2013) (USA,CHN,2011) (USA,CHN,2012) [ ] Un oggetto Multindex può essere pensato come una lista di tuple, ciascuna che identifica una riga In pandas viene gestito attraverso un oggetto composto fatto di: una lista di names una lista di levels (lista degli identificativi associati ai vari names) una lista di labels (lista delle posizioni assunte dagli elementi dei levels)
  • 3. Tramite metodo della classe MultiIndex pandas.MultiIndex.from_tuples ( lista di tuple) pandas.MultiIndex.from_array ( lista di array) pandas.MultiIndex.from_product ( lista degli insiemi (liste) di cui viene calcolato il prodotto cartesiano) [‘a’,’b’] [1, 2] (‘a’,1) (‘a’,2) (‘b’,1) ITA FRA 2011 ITA FRA 2012 ITA FRA 2013 ITA DEU 2011 ITA DEU 2012 ITA DEU 2013 USA CHN 2011 USA CHN 2012 (‘b’,2) Tramite metodo .set_index della classe DataFrame XER MER YEAR ITA FRA 2011 2012 2013 DEU 2011 2012 2013 USA CHN 2011 2012 XER MER YEAR DF.set_index([‘XER’,MER’,’YEAR])
  • 4. DF piatto ITA FRA 2011 765 234 ITA FRA 2012 743 256 ITA FRA 2013 845 342 ITA DEU 2011 829 333 ITA DEU 2012 876 321 ITA DEU 2013 982 434 USA CHN 2011 895 377 USA CHN 2012 895 354 XER MER YEAR V Q ITA FRA 2011 2012 2013 DEU 2011 2012 2013 USA CHN 2011 2012 XER MER YEAR set_index(...) 765 234 743 256 845 342 829 333 876 321 982 434 895 377 895 354 V Q DF.columns [‘XER’,’MER’,’YEAR’,’V’,’Q’] DF.columns [‘’V’,’Q’] DF con MultiIndex Molti metodi della classe DataFrame operano sulle colonne
  • 5. ITA FRA 2011 2012 2013 DEU 2011 2012 2013 USA CHN 2011 2012 XER MER YEAR .loc [ selezione righe , selezione colonne ] .loc[idx[:, :, [‘2010,‘2011‘,’2012’], ] ITA FRA 2011 2012 DEU 2011 2012 USA CHN 2011 2012 XER MER YEAR vuoto per selezionare tutte le colonne tramite operatore idx from pandas import IndexSlice as idx .sortlevel(inplace=True)
  • 6. ITA FRA 2011 2012 2013 DEU 2011 2012 2013 USA CHN 2011 2012 XER MER YEAR .loc[‘ITA’,’FRA’] .loc [ selezione righe , selezione colonne ] .loc[(‘ITA’,’FRA’, slice(None)) , ] .loc[idx[‘ITA’,’FRA’, : ] , ] 2011 2012 2013 YEAR ITA FRA 2011 2011 2011 XER MER YEAR .loc(axis=0) [‘ITA’,’FRA’,:] .loc(axis=0)[‘ITA’,’FRA’] solo righe. Non necessaria virgola finale
  • 7. ITA FRA 2011 2012 2013 DEU 2011 2012 2013 USA CHN 2011 2012 XER MER YEAR .loc[‘ITA’,’FRA’] .loc [ selezione righe , selezione colonne ] .loc[(‘ITA’,’FRA’, slice(None)),] from pandas import IndexSlice ad idx .loc[idx[‘ITA’,’FRA’,:],] ITA FRA 2011 2012 2013 XER MER YEAR .loc[(slice(None), slice(None), ‘2011‘),] .loc[idx[:, :, ‘2011‘],] ITA FRA 2011 DEU 2011 USA CHN 2011 XER MER YEAR .loc(axis=0)[idx[‘ITA’,’FRA’,:]] .sortlevel(inplace=True) .loc(axis=0)[idx[:, :, ‘2011‘]] .loc(axis=0)[‘ITA’,’FRA’,:] .loc(axis=0)[:, :, ‘2011‘] .loc(axis=0)[slice(None),Slice(None)‘2011‘]
  • 8.
  • 9. .loc [ selezione righe , selezione colonne ] DFI.loc [ idx[:, ['ITA','FRA'] , ['KOR','GBR'] ], [ 'Q', 'X' ] ] .isin() .isin() .loc(axis=0) [ idx ['2010':'2012', 'ITA', : , 'HH':'HM'] ] periodo dal 2010 al 2012 esportatore Italia tutti i partner fasce alte di prezzo .loc(axis=0) [ idx['2002' : '2006' : 2, 'DEU' , 'USA' ] ] passo
  • 10. .index.get_level_values('XER') lista valori di XER .index.lexsort_depth livello ordinamento .sortlevel(inplace=True) sort .unstack(level=....) .swaplevel(0, 1 , axis=0 ) inverte livello 0 e 1 da indice riga a indice colonna .stack(level=....) da indice colonna a indice riga