English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Le comportement de l'itération de base sur les objets Pandas dépend du type. Lors de l'itération sur une série, elle est équivalente à un tableau. D'autres structures de données (comme DataFrame et Panel) suivent une syntaxe similaire à dict, en itérant sur les clés de l'objet.
En résumé, l'itération de base (for i dans l'objet) produit −
Série − valeur DataFrame − étiquette de colonne Panel − item étiquette
L'itération d'un DataFrame donne les noms de colonnes. Regardons l'exemple suivant.
import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'), 'x': np.linspace(0,stop=N-1,num=N), 'y': np.random.rand(N), 'C': np.random.choice(['Low','Medium','High'],N).tolist(), 'D': np.random.normal(100, 10, size=(N)).tolist() }) for col in df: print col
Son output est le suivant
A C D x y
Pour parcourir les lignes d'un DataFrame, nous pouvons utiliser les fonctions suivantes-
iteritems() − Itérer sur les paires (clé, valeur) iterrows() − Parcourir les lignes sous forme de paires (index, série) itertuples() − Parcourir les lignes sous forme de namedtuples
Parcourir chaque colonne en tant que clé, et les paires de valeurs étiquetées en tant que clé, et les valeurs de colonne en tant que série d'objets.
import pandas as pd import numpy as np df = pd. DataFrame(np. random.randn(4,3),columns=[ 'col1', 'col2', 'col3']) for key,value in df. iteritems(): print key,value
Résultat de l'exécution :
col1 0 0.802390 1 0.324060 2 0.256811 3 0.839186 Nom: col1, dtype: float64 col2 0 1.624313 1 -1.033582 2 1.796663 3 1.856277 Nom: col2, dtype: float64 col3 0 -0.022142 1 -0.230820 2 1.160691 3 -0.830279 Nom: col3, dtype: float64
On peut voir que chaque colonne est itérée comme un couple clé-valeur dans une série.
iterrows() retourne un itérateur générant chaque valeur d'index et une séquence contenant les données de chaque ligne.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row_index,row in df.iterrows(): print row_index,row
Résultat de l'exécution :
0 col1 1.529759 col2 0.762811 col3 -0.634691 Nom: 0, dtype: float64 1 col1 -0.944087 col2 1.420919 col3 -0.507895 Nom: 1, dtype: float64 2 col1 -0.077287 col2 -0.858556 col3 -0.663385 Nom: 2, dtype: float64 3 col1 -1.638578 col2 0.059866 col3 0.493482 Nom: 3, dtype: float64
Comme iterrows() parcourt les lignes, le type de données de la ligne ne sera pas conservé. 0,1,2est l'index de ligne, col1,col2,col3est l'index de colonne.
itertuples() méthode retourne un itérateur, générant un tuple nommé pour chaque ligne de DataFrame. Le premier élément du tuple sera la valeur d'index correspondante de la ligne, et les autres valeurs sont les valeurs de la ligne.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row in df.itertuples(): print row
Résultat de l'exécution :
Pandas(Index=0, col1=1.5297586201375899, col2=0.76281127433814944, col3=- 0.6346908238310438) Pandas(Index=1, col1=-0.94408735763808649, col2=1.4209186418359423, col3=- 0.50789517967096232) Pandas(Index=2, col1=-0.07728664756791935, col2=-0.85855574139699076, col3=- 0.6633852507207626) Pandas(Index=3, col1=0.65734942534106289, col2=-0.95057710432604969, col3=0.80344487462316527)
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for index, row in df.iterrows(): row['a'] = 10 print df
Résultat de l'exécution :
col1 col2 col3 0 -1.739815 0.735595 -0.295589 1 0.635485 0.106803 1.527922 2 -0.939064 0.547095 0.038585 3 -1.016509 -0.116580 -0.523158
Observation, aucune modification n'a été reflétée.