Lors de la sélection des valeurs d'une série pandas, les indexeurs .loc et .iloc sont tous deux utiles selon le contexte. .loc est principalement utilisé pour sélectionner des données en fonction des étiquettes, tandis que .iloc repose sur les positions entières. Exemples :
Créer une série
Créons une série simple avec pandas :
import pandas as pd
data = {'a': 1, 'b': 2, 'c': 3, 'e':4, 'f':5}
ds = pd.Series(data=data)
print(ds)
output
a 1
b 2
c 3
e 4
f 5
dtype: int64
Sélectionnez des valeurs en utilisant loc()
Sélectionnez une valeur
Si vous souhaitez sélectionner une ligne spécifique, vous pouvez utiliser .loc avec un nom d'index tel que
ds.loc['c']
ce qui renvoie
3
Notez que
type(ds.loc['c'])
retourne ici
numpy.int64
### Sélectionnez plusieurs valeurs
Pour sélectionner un ensemble de valeurs en fonction de leurs noms en utilisant .loc:
ds.iloc['c':'f']
ce qui renverra:
c 3
e 4
f 5
dtype: int64
Notez que
type(ds.iloc['c':'f'])
donne
pandas.core.series.Series
Utilisation d'une liste
name_list = ['a','c','f']
ds.loc[name_list]
donne
a 1
c 3
f 5
dtype: int64
Utilisation d'une condition
Il est également possible d'utiliser loc avec une condition. Par exemple, si vous souhaitez sélectionner toutes les lignes avec une valeur supérieure à 2, vous pouvez utiliser l'indexeur .loc avec une condition telle que
ds.loc[:] > 2.
donne
a False
b False
c True
e True
f True
dtype: bool
Alors
ds.loc[ ds.loc[:] > 2. ]
donne
c 3
e 4
f 5
dtype: int64
Sélectionner des valeurs en utilisant iloc()
Sélectionnez une valeur
Une autre solution si vous souhaitez sélectionner une ligne spécifique est d'utiliser l'indexeur .iloc avec une position entière telle que
ds.iloc[2]
qui retourne
3
Il est important de noter que lors de l'utilisation de l'indexeur .iloc, vous sélectionnez toujours par position et non par libellé. Cela signifie que vous devez être conscient de tout changement potentiel dans l'ordre des lignes ou des colonnes qui pourrait affecter vos résultats. De plus, vous devez également être conscient de tout libellé en double, car ils peuvent produire un comportement inattendu lors de la sélection de valeurs avec l'indexeur .loc.
Notez que
type(ds.iloc[2])
donne
numpy.int64
Sélectionner plusieurs valeurs
Pour sélectionner un ensemble de valeurs en fonction de leur position entière en utilisant .iloc :
ds.iloc[2:5]
qui renverra :
c 3
e 4
f 5
dtype: int64
Notez que
type(ds.iloc[2:5])
donne
pandas.core.series.Series
Utilisation d'une liste
idx_list = [0,2,4]
ds.iloc[idx_list]
donne
a 1
c 3
f 5
dtype: int64
Notes supplémentaires
Convertir une série en un DataFrame
Si vous souhaitez convertir une série en un DataFrame, vous pouvez utiliser la fonction to_frame() comme suit:
ds.to_frame()
donne
0
a 1
b 2
c 3
e 4
f 5
Parcourir les lignes d'une DataFrame
Note
import pandas as pd
import numpy as np
np.random.seed(42)
data = np.random.uniform(10,80, size=(4,2))
df1 = pd.DataFrame(data,columns=['A','B'])
print(df1)
donne
A B
0 36.217808 76.550001
1 61.239576 51.906094
2 20.921305 20.919616
3 14.065853 70.632330
parcourir les lignes de df1
for index, row in df1.iterrows():
print(row)
print( type(row) )
donne
A 36.217808
B 76.550001
Name: 0, dtype: float64
<class 'pandas.core.series.Series'>
A 61.239576
B 51.906094
Name: 1, dtype: float64
<class 'pandas.core.series.Series'>
A 20.921305
B 20.919616
Name: 2, dtype: float64
<class 'pandas.core.series.Series'>
A 14.065853
B 70.632330
Name: 3, dtype: float64
<class 'pandas.core.series.Series'>
Références
Liens | Site |
---|---|
pandas.Series | pandas.pydata.org |
iloc() | pandas.pydata.org |
loc() | pandas.pydata.org |