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