Comment sélectionner les valeurs d'une série pandas ?

Published: 21 septembre 2023

Tags: Python; Pandas; Dataframe; Series;

DMCA.com Protection Status

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