Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Pandas .iloc[]를 활용한 행·열 선택 방법 완벽 가이드

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을 사용하는 것이 좋습니다. 두 메서드의 차이를 이해해두면 데이터 전처리 작업이 훨씬 수월해집니다.