English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pandas 객체에 대한 기본 이터에이션의 행동은 타입에 따라 다릅니다. 시리즈에 대해 이터에이션할 때, 그것은 배열과 동일합니다. 다른 데이터 구조(예: DataFrame와 패널)는 dict와 유사한 문법을 따릅니다. 즉, 객체의 키를 이터에이션합니다.
결론적으로, 기본 이터에이션 (for i object) 이터에이션 시 −
시리즈 − 값 DataFrame − 열 태그 패널 − 아이템 태그
DataFrame를 순회하면 열 이름이 나타납니다. 다음 예제를 보겠습니다.
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
이 출력이 다음과 같습니다
A C D x y
DataFrame의 행을 순회하려면 다음 함수를 사용할 수 있습니다-
iteritems(): − (키, 값) 튜플을 이터에이션합니다 iterrows() − (인덱스, 시리즈) 튜플 형태로 행을 순회합니다 itertuples() − 행을 namedtuples 형태로 순회합니다
각 열을 키로 순회하며, 레이블이 있는 값 튜플을 키로, 열 값을 시리즈 객체로 설정합니다.
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
실행 결과:
col1 0 0.802390 1 0.324060 2 0.256811 3 0.839186 이름: col1, dtype: float64 col2 0 1.624313 1 -1.033582 2 1.796663 3 1.856277 이름: col2, dtype: float64 col3 0 -0.022142 1 -0.230820 2 1.160691 3 -0.830279 이름: col3, dtype: float64
각 열이 시리즈 내에서 키밸류로 각각 이터레이션될 수 있음을 알 수 있습니다.
iterrows()는 각 인덱스 값과 각 행 데이터를 포함한 시퀀스를 생성하는 이터레이터를 반환합니다.
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
실행 결과:
0 col1 1.529759 col2 0.762811 col3 -0.634691 이름: 0, 데이터 타입: float64 1 col1 -0.944087 col2 1.420919 col3 -0.507895 Name: 1, dtype: float64 2 col1 -0.077287 col2 -0.858556 col3 -0.663385 Name: 2, dtype: float64 3 col1 -1.638578 col2 0.059866 col3 0.493482 Name: 3, dtype: float64
iterrows()는 행을 순회하므로 데이터 타입을 유지하지 않습니다. 0,1,2은 행 인덱스이며,col1,col2,col3은 열 인덱스입니다.
itertuples() 메서드는 이터레이터를 반환하며, DataFrame의 각 행에 하나의 명명된 튜플을 생성합니다. 튜플의 첫 번째 요소는 행의 해당 인덱스 값이며, 나머지 값은 행 값입니다.
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
실행 결과:
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
실행 결과:
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
観察してみても、何も変わっていません。