python advanced 03-multiindex

13

Click here to load reader

Upload: studiabo

Post on 12-Apr-2017

8 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Python advanced 03-multiindex

Corso Data Journalist gen-mar 2017

PYTHON ADVANCED

DataFrame con multiIndex

Page 2: Python advanced 03-multiindex

Classe Multindex

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 assuntedagli elementi dei levels)

Page 3: Python advanced 03-multiindex

Classe MultiIndex: metodi di inizializzazione

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])

Page 4: Python advanced 03-multiindex

DF piatto e DF con multiIndexDF 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

Page 5: Python advanced 03-multiindex

DataFrame con multiIndex: estrattore .loc

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 ad idx .sortlevel(inplace=True)

Page 6: Python advanced 03-multiindex

DataFrame con multiIndex: estrattore .loc

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

Page 7: Python advanced 03-multiindex

DataFrame con multiIndex: estrattore .loc

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‘]

Page 8: Python advanced 03-multiindex

LEZIONE 1..www.fordatascientist.org

E00-PyDataH10-Pandas-MultiIndex1.ipynb

Page 9: Python advanced 03-multiindex

DataFrame con multiIndex: estrattore .loc

.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 2012esportatore

Italiatutti i

partnerfasce alte di prezzo

.loc(axis=0) [ idx['2002' : '2006' : 2, 'DEU' , 'USA' ] ]passo

Page 10: Python advanced 03-multiindex

DataFrame con multiIndex: metodi

.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

Page 11: Python advanced 03-multiindex

LEZIONE 1..www.fordatascientist.org

E00-PyDataH12-Pandas-MultiIndex2

Page 12: Python advanced 03-multiindex

Dataframe: metodi

pandas.merge (DF1, DF2, left_on=....right_on=...)

DataFrame non indicizzati DataFrame indicizzati

pandas.merge (DF1, DF2, left_index=True right.index=True)

.groupby ( [‘VAR2’, ‘VAR3’] ) .groupby ( level=[‘VAR2’, ‘VAR3’] )

Page 13: Python advanced 03-multiindex

CONTATTI TELEFONO

051 22 35 20

EMAIL [email protected]