본문 바로가기
머신러닝을 위한 파이썬 기초/판다스

[파이썬 판다스] 데이터프레임 인덱싱 방법 (인덱스 vs 이름)

by bigpicture 2023. 9. 5.
반응형

먼저 판다스 데이터프레임을 하나 만들어봅시다. 

import pandas as pd

L1=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

df=pd.DataFrame(L1,columns=['C1','C2','C3'],index=['R1','R2','R3','R4'])


만들어진 데이터프레임은 아래와 같습니다. 

>>> df
    C1  C2  C3
R1   1   2   3
R2   4   5   6
R3   7   8   9
R4  10  11  12


데이터프레임 인덱싱을 하는 상황은 아래와 같이 나뉩니다

1) 인덱싱 방법 : 인덱스 or 이름
2) 인덱싱 결과 : 행 or 열 or 복합

인덱싱 방법으로 큰 분류를 나누고, 각 방법 안에서 인덱싱 결과를 행, 열, 복합으로 출력하는 방법을 알아봅시다. 

 

1. 인덱스를 사용하여 인덱싱

iloc 라는 메소드를 사용합니다. i는 integer 의 약어, loc 는 location 의 약어입니다. 정수를 이용한 위치를 사용한다는 뜻입니다. 인덱싱 방법은 아래와 같습니다. 

df.iloc[행번호, 열번호]

만약 전체 행 또는 전체 열을 원할 경우 행번호 또는 열번호 대신 : 를 입력하면 됩니다. 

위에서 정의한 df 라는 데이터프레임의 1행에 접근해봅시다. 인덱스는 1이 아닌 0부터 시작합니다. 

>>> df.iloc[0,:]
C1    1
C2    2
C3    3
Name: R1, dtype: int64


출력 결과는 판다스 시리즈입니다. 

>>> type(df.iloc[0,:])
<class 'pandas.core.series.Series'>


df의 3,4행에 접근해봅시다. 아래와 같은 두 가지 방법으로 가능합니다. 

>>> df.iloc[[2,3],:]
    C1  C2  C3
R3   7   8   9
R4  10  11  12

>>> df.iloc[2:3,:]   
    C1  C2  C3
R3   7   8   9


이번에는 열에 접근해봅시다. 행과 동일하고 자리만 바꿔주면 됩니다. 1,3 열에 접근합시다. 

>>> df.iloc[:,[0,2]]
    C1  C3
R1   1   3
R2   4   6
R3   7   9
R4  10  12


이번에는 행과 열의 인덱스를 둘다 사용해봅시다. 1행의 1,2열에 접근해봅시다. 

>>> df.iloc[0,[0,1]]
C1    1
C2    2
Name: R1, dtype: int64

 

2. 이름을 사용하여 인덱싱

loc 라는 메소드를 사용합니다. loc 는 location 의 약어입니다. 인덱싱 방법은 아래와 같습니다. 

df.iloc[행이름, 열이름]

위에서 정의한 df 라는 데이터프레임의 1행에 접근해봅시다. 

>>> df.loc['R1',:] 
C1    1
C2    2
C3    3
Name: R1, dtype: int64


df의 3,4행에 접근해봅시다. 

>>> df.loc[['R3','R4'],:] 
    C1  C2  C3
R3   7   8   9
R4  10  11  12


나머지 원리도 동일합니다. 

반응형

댓글