Pandas는 파이썬에서 데이터 처리와 분석에 가장 널리 사용되는 대표적인 라이브러리입니다. 이 글에서는 데이터프레임(DataFrame)에서 행과 열을 필터링해 원하는 데이터만 골라 읽어올 수 있는 .iloc 메서드의 사용법을 예제와 함께 자세히 살펴보겠습니다.
iloc 메서드는 정수 기반 인덱스(integer-based index)를 사용해 데이터를 처리합니다. 이 인덱스는 반드시 원본 데이터셋에 포함되어 있을 필요는 없으며, 첫 번째 행에는 0, 두 번째 행에는 1이 순서대로 자동 할당됩니다. 열 역시 마찬가지로 첫 번째 열이 0, 두 번째 열이 1의 인덱스를 갖습니다.
사용할 데이터셋
이 글 전체에서 사용할 데이터셋은 다음과 같습니다.
Id SepalLengthCm ... PetalLengthCm PetalWidthCm Iris-setosa-1 5.1 ... 1.4 0.2 Iris-setosa-2 4.9 ... 1.4 0.2 Iris-setosa-3 4.7 ... 1.3 0.2
단일 행 선택하기
인덱스에 해당하는 정수를 지정하면 하나의 행 또는 여러 개의 행을 모두 선택할 수 있습니다. 아래 예제에서는 0번 행과 1번 행을 각각 개별적으로 가져와 출력합니다.
예제
import pandas as pd
# CSV 파일로 데이터프레임 생성
data = pd.read_csv("D:\Iris_readings.csv")
row0 = data.iloc[0]
row1 = data.iloc[1]
print(row0)
print(row1)출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Id Iris-setosa-1 SepalLengthCm 5.1 SepalWidthCm 3.5 PetalLengthCm 1.4 PetalWidthCm 0.2 Name: 0, dtype: object Id Iris-setosa-2 SepalLengthCm 4.9 SepalWidthCm 3.0 PetalLengthCm 1.4 PetalWidthCm 0.2 Name: 1, dtype: object
여러 행 한 번에 선택하기
슬라이싱(slicing) 문법을 활용하면 필요한 행의 범위를 지정해 여러 행을 한 번에 선택할 수 있습니다. 아래 예제에서는 4번부터 8번 앞까지, 즉 4, 5, 6, 7번 행을 동시에 가져옵니다. 참고로 iloc 슬라이싱은 끝 인덱스를 포함하지 않는다는 점에 유의하세요.
예제
import pandas as pd
# CSV 파일로 데이터프레임 생성
data = pd.read_csv("D:\Iris_readings.csv")
rows = data.iloc[4:8]
print(rows)출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm 4 Iris-setosa-5 5.0 3.6 1.4 0.2 5 Iris-versicolor-51 7.0 3.2 4.7 1.4 6 Iris-versicolor-52 6.4 3.2 4.5 1.5 7 Iris-versicolor-53 6.9 3.1 4.9 1.5
행과 열 동시에 선택하기
iloc은 행뿐만 아니라 열도 함께 선택할 수 있습니다. [행_범위, 열_범위] 형태로 값을 지정하면 됩니다. 아래 예제에서는 4~7번 행 중에서 첫 번째 열(0)부터 두 번째 열(1)까지만 추출합니다.
예제
import pandas as pd
# CSV 파일로 데이터프레임 생성
data = pd.read_csv("D:\Iris_readings.csv")
rows_columns = data.iloc[4:8, 0:2]
print(rows_columns)출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Id SepalLengthCm 4 Iris-setosa-5 5.0 5 Iris-versicolor-51 7.0 6 Iris-versicolor-52 6.4 7 Iris-versicolor-53 6.9
참고: iloc과 loc의 차이
.iloc는 정수 위치 기반 인덱싱을 사용하는 반면, .loc는 레이블(label) 기반 인덱싱을 사용합니다. 따라서 행 이름이나 조건식을 기준으로 데이터를 선택하고 싶다면 .loc이 더 적합하며, 위치 순서로 접근하고 싶다면 .iloc을 사용하는 것이 좋습니다. 두 메서드의 차이를 이해해두면 데이터 전처리 작업이 훨씬 수월해집니다.