pandas
Utilizzando .ix, .iloc, .loc, .at e .iat per accedere a un DataFrame
Ricerca…
Utilizzando .iloc
.iloc usa interi per leggere e scrivere dati su un DataFrame.
Per prima cosa, creiamo un DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Questo DataFrame si presenta come:
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Ora possiamo usare .iloc per leggere e scrivere valori. Leggiamo la prima riga, prima colonna:
print df.iloc[0, 0]
Questo verrà stampato:
1
Possiamo anche impostare valori. Consente di impostare la seconda colonna, la seconda riga su qualcosa di nuovo:
df.iloc[1, 1] = '21'
E poi dai un'occhiata per vedere cosa è successo:
print df
one two
a 1 6
b 2 21
c 3 8
d 4 9
e 5 10
Utilizzando .loc
.loc utilizza le etichette per leggere e scrivere dati.
Impostiamo un DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Quindi possiamo stampare DataFrame per dare un'occhiata alla forma:
print df
Questo uscirà
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Utilizziamo le etichette di colonne e righe per accedere ai dati con .loc. Imposta la riga 'c', la colonna 'due' sul valore 33:
df.loc['c', 'two'] = 33
Ecco come appare DataFrame:
one two
a 1 6
b 2 7
c 3 33
d 4 9
e 5 10
Da notare che l'uso di df['two'].loc['c'] = 33
potrebbe non riportare un avviso, e potrebbe anche funzionare, tuttavia, usando df.loc['c', 'two']
è garantito che funzioni correttamente mentre il primo non lo è.
Possiamo leggere fette di dati, per esempio
print df.loc['a':'c']
stamperà le righe da a a c. Questo è inclusivo.
one two
a 1 6
b 2 7
c 3 8
E infine, possiamo fare entrambi insieme:
print df.loc['b':'d', 'two']
Emetterà le righe da b a c della colonna 'due'. Si noti che l'etichetta della colonna non viene stampata.
b 7
c 8
d 9
Se .loc viene fornito con un argomento intero che non è un'etichetta, viene ripristinato l'indicizzazione dei numeri interi degli assi (il comportamento di .iloc). Ciò rende possibile l'indicizzazione di etichette e interi misti:
df.loc['b', 1]
restituirà il valore nella seconda colonna (indice che inizia da 0) nella riga 'b':
7