직접 해보기/Python

[Pandas] 데이터프레임 특정 행열 선택 추출하기 :: loc iloc

서윤L 2024. 6. 18. 13:46
728x90
반응형

0️⃣  데이터프레임 생성

  • 먼저 테스트를 위한 데이터프레임을 생성하겠습니다.
import pandas as pd
import numpy as np

# 테스트용 데이터프레임 생성
df_test1 = pd.DataFrame({
    'A': [1,2,3,4,5,6,7,8,9,10],
    'B': [10,20,30,40,50,60,70,80,90,100],
    'C': [2,4,6,8,10,12,14,16,18,20],
    'D': [1,3,5,7,9,11,13,15,17,19],
    'E': [10,15,20,25,30,35,40,45,50,55]
})
df_test1


1️⃣  특정한 열 or 특정한 행만 선택하기

  • 특정한 칼럼(열) 만 선택해서 출력하려면, 아래처럼 대괄호 2개 안에 칼럼명을 넣어주면 됩니다.
    원하는 칼럼만 선택해서 원하는 순서대로 출력할 수 있습니다. (데이터프레임에 가위질을 여러번 할 수 있음!)
# 특정 칼럼만 선택해서 출력하기 
df_test1[['칼럼명1', '칼럼명2', .. ,'칼럼명n']]

 

 

  • 특정한 행(인덱스) 만 선택해서 출력하려면, 아래처럼 대괄호 1개 안에 범위를 넣어서 슬라이싱 해줘야 합니다.
    칼럼과 다르게 연속적인 범위로만 선택할 수 있습니다. (데이터프레임에 가위질을 한번밖에 못함!)
    행 1개만 출력하고 싶어도, 아래처럼 범위로 넣지 않으면 에러가 발생합니다.
# 슬라이싱: 특정 행범위를 선택해서 출력하기
# x번째 ~ y번째 행 출력하는 경우
df_test1[x-1 : y]

 

 


2️⃣  특정한 행열을 동시에 선택하기  ::  loc, iloc

  • 행열 범위를 동시에 선택해서 데이터프레임을 잘라보고 싶은 경우라면, loc이나 iloc 메소드를 사용해야 합니다.
    - loc : 행열에 레이블로 접근합니다. 다시말해 사용자가 정해둔 인덱스명, 칼럼명으로 범위를 지정할 수 있습니다.
    - iloc : 행열에 인덱스값으로 접근합니다. 정해둔 이름이 아니라 0 based index 값으로 범위를 지정해야 합니다. 
loc (location) iloc (integer location)
- 행/열에 레이블로 접근하는 방법
- 인덱스 및 칼럼명으로 지정함
- 설정한 인덱스를 그대로 사용함
- 행/열에 인덱스값으로 접근하는 방법
- 인덱스로만 지정함
- 설정한 인덱스가 아닌, 0 based index를 사용해야 함

 

 

  • 아래 예시를 참고하면 이해하기 더 쉬울 것 같습니다.
    데이터프레임의 인덱스를 101~110으로 지정해두었습니다. 따라서 loc 으로는 지정해둔 인덱스로 접근할 수 있습니다.
    반면에 iloc 으로는 101~110 으로 접근하려하면 에러가 나고, 0 based index 로 접근해야만 합니다.
# loc 으로 행/열 선택하기 - 설정한 인덱스와 칼럼명 그대로 사용하면 됨
df_test2.loc[[101,103,105,110], ['A', 'B']]

# iloc으로 행/열 선택하기 - 0 based index 로 지정해줘야 함
df_test2.iloc[[0,2,4,9], [0,1]]


3️⃣  칼럼 조건 지정해서 데이터 추출하기 (Boolean연산 - 논리연산, 비교연산)

  • 칼럼별 값들에 대해 조건을 지정해서 데이터를 뽑아볼 수도 있습니다. 조건은 Boolean 연산으로 지정하면 됩니다.
  • 논리 연산: and , & , or , | , not , !=
  • 비교 연산: is , is not , == , != , < , > , <= , >=


 

 

728x90
반응형