pandas
Utiliser .ix, .iloc, .loc, .at et .iat pour accéder à un DataFrame
Recherche…
Utiliser .iloc
.iloc utilise des entiers pour lire et écrire des données sur un DataFrame.
Tout d'abord, créons un DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Ce DataFrame ressemble à:
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Maintenant, nous pouvons utiliser .iloc pour lire et écrire des valeurs. Lisons la première ligne, première colonne:
print df.iloc[0, 0]
Cela va imprimer:
1
Nous pouvons également définir des valeurs. Permet de définir la deuxième colonne, deuxième ligne à quelque chose de nouveau:
df.iloc[1, 1] = '21'
Et puis regardez pour voir ce qui s'est passé:
print df
one two
a 1 6
b 2 21
c 3 8
d 4 9
e 5 10
Utiliser .loc
.loc utilise des étiquettes pour lire et écrire des données.
Configurons un DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Ensuite, nous pouvons imprimer le DataFrame pour voir la forme:
print df
Cela va sortir
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Nous utilisons les étiquettes de colonne et de ligne pour accéder aux données avec .loc. Définissons la ligne 'c', colonne 'two' à la valeur 33:
df.loc['c', 'two'] = 33
Voici à quoi ressemble maintenant le DataFrame:
one two
a 1 6
b 2 7
c 3 33
d 4 9
e 5 10
À noter que l'utilisation de df['two'].loc['c'] = 33
peut ne pas signaler un avertissement, et peut même fonctionner, mais l'utilisation de df.loc['c', 'two']
est garantie. , tandis que le premier n'est pas.
Nous pouvons lire des tranches de données, par exemple
print df.loc['a':'c']
imprimera les lignes a à c. C'est inclusif.
one two
a 1 6
b 2 7
c 3 8
Et enfin, nous pouvons faire les deux ensemble:
print df.loc['b':'d', 'two']
Produira les lignes b à c de la colonne "deux". Notez que l'étiquette de colonne n'est pas imprimée.
b 7
c 8
d 9
Si .loc est fourni avec un argument entier qui n'est pas une étiquette, il retourne à l'indexation entière des axes (le comportement de .iloc). Cela rend possible l'indexation mixte d'étiquettes et d'entiers:
df.loc['b', 1]
renverra la valeur dans la 2ème colonne (index commençant à 0) dans la ligne 'b':
7