데이터프레임의 인덱싱 : at, iloc, loc

2024. 2. 7. 10:42·파이썬/Pandas
반응형

데이터프레임에서 데이터를 접근하는 방법에는 여러 가지가 있지만, 가장 중요한 세 가지 메서드는 at, iloc, loc입니다. 이 세 가지 메서드는 각기 다른 방식으로 데이터에 접근하므로, 상황에 맞는 메서드를 사용하는 것이 중요합니다.

 

1. at 메서드

at 메서드는 레이블(label)을 사용하여 데이터프레임의 특정 위치에 있는 값을 선택합니다. 레이블은 행 인덱스와 열 이름으로 구성됩니다.

 

장점:

  • 직관적이고 명확한 코드 작성 가능
  • 행 이름이나 열 이름을 사용하여 데이터 접근 가능

단점:

  • 레이블이 유일해야 함
  • 레이블이 존재하지 않으면 KeyError 발생
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# 'A' 열의 두 번째 행 값 선택
value = df.at[1, 'A']

# 'B' 열의 '3' 행 값 선택
value = df.at['3', 'B']

 

2. iloc 메서드

iloc 메서드는 정수 인덱스를 사용하여 데이터프레임의 특정 위치에 있는 값을 선택합니다. 인덱스는 행 인덱스와 열 인덱스로 구성됩니다.

 

장점:

  • 레이블을 알지 못하더라도 위치를 통해 데이터 접근 가능
  • 빠른 속도

단점:

  • 레이블이 변경되면 인덱스가 변경될 수 있음
  • 인덱스가 유효하지 않으면 KeyError 발생
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# 'A' 열의 두 번째 행 값 선택
value = df.iloc[1, 0]

# 'B' 열의 '3' 행 값 선택
value = df.iloc[2, 1]

 

3. loc 메서드

loc 메서드는 레이블 또는 정수 인덱스를 사용하여 데이터프레임의 특정 위치에 있는 값을 선택합니다. loc 메서드는 at 메서드와 iloc 메서드의 장점을 결합한 것으로, 레이블 또는 인덱스를 사용하여 데이터에 접근할 수 있습니다.

 

장점:

  • 레이블과 인덱스 모두 사용 가능
  • 직관적이고 명확한 코드 작성 가능
  • 빠른 속도

단점:

  • 레이블이 유일해야 함
  • 인덱스가 유효하지 않으면 KeyError 발생
# 'A' 열의 두 번째 행 값 선택
value = df.loc[1, 'A']

# 'B' 열의 '3' 행 값 선택
value = df.loc['3', 'B']

# 'A' 열의 모든 값 선택
values = df.loc[:, 'A']

# '3' 행의 모든 값 선택
values = df.loc['3', :]

 

loc 메서드의 추가 기능:

 

슬라이싱:

  • 레이블 또는 정수 인덱스를 사용하여 여러 행 또는 열을 선택할 수 있습니다.
  • 슬라이싱을 사용하여 데이터프레임의 특정 부분을 선택하여 작업할 수 있습니다.
# 'A' 열의 첫 번째부터 세 번째 행까지 선택
values = df.loc[0:2, 'A']

# 'B' 열의 두 번째 열부터 마지막 열까지 선택
values = df.loc[:, 1:]

# '3' 행부터 '5' 행까지, 'A' 열부터 'C' 열까지 선택
values = df.loc[2:4, :3]

 

조건부 선택:

  • loc 메서드는 불리언 표현식을 사용하여 조건에 맞는 행을 선택할 수 있습니다.
  • 조건부 선택을 사용하여 데이터프레임의 특정 부분만 분석하거나 조작할 수 있습니다.
# 'A' 열 값이 2보다 큰 행 선택
values = df.loc[df['A'] > 2, :]

# 'B' 열 값이 '5'인 행 선택
values = df.loc[df['B'] == 5, :]

# 'A' 열 값이 2보다 크고 'B' 열 값이 '5'인 행 선택
values = df.loc[(df['A'] > 2) & (df['B'] == 5), :]

 

데이터프레임 수정:

  • loc 메서드는 선택한 값을 변경하여 데이터프레임을 직접 수정할 수 있습니다.
  • 데이터프레임 수정을 사용하여 데이터를 업데이트하거나 새로운 데이터를 추가할 수 있습니다.
# 'A' 열의 두 번째 행 값을 10으로 변경
df.loc[1, 'A'] = 10

# 'B' 열의 '3' 행 값을 '7'로 변경
df.loc['3', 'B'] = 7

# 'C' 열에 새로운 값 추가
df.loc[:, 'C'] = df['A'] + df['B']

 

결론:

at, iloc, loc 메서드는 데이터프레임에서 데이터를 접근하고 조작하는 가장 중요한 메서드입니다. 각 메서드의 장점과 단점을 이해하고 상황에 맞는 메서드를 사용하면 데이터 분석 작업을 효율적으로 수행할 수 있습니다.

참고:

  • 데이터프레임의 인덱스와 레이블에 대한 자세한 내용은 Pandas 문서를 참조하십시오.
  • 데이터프레임의 데이터 조작에 대한 다양한 방법을 익히면 데이터 분석 작업을 더욱 효율적으로 수행할 수 있습니다.

추가 정보:

  • Pandas 공식 문서: https://pandas.pydata.org/pandas-docs/stable/
  • 데이터프레임 데이터 조작: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html
저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Pandas' 카테고리의 다른 글

Pandas에서 SettingWithCopy 에러 발생 원인과 해결 방법  (0) 2024.01.26
Pandas : DataFrame 합치기  (2) 2024.01.22
저장된 파일을 데이터프레임으로 읽어올 때 na_values, na_filter 매개변수 활용하기  (0) 2024.01.21
ValueError: Cannot mask with non-boolean array containing NA / NaN values  (0) 2024.01.20
Pandas 데이터 필터링 : 원하는 데이터만 골라내기  (0) 2024.01.19
'파이썬/Pandas' 카테고리의 다른 글
  • Pandas에서 SettingWithCopy 에러 발생 원인과 해결 방법
  • Pandas : DataFrame 합치기
  • 저장된 파일을 데이터프레임으로 읽어올 때 na_values, na_filter 매개변수 활용하기
  • ValueError: Cannot mask with non-boolean array containing NA / NaN values
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    Python
    카페24리뷰이관
    unity
    스크립트 실행
    codingtips
    programming101
    라떼우유
    파이썬
    상품 리뷰 크롤링
    list
    appdevelopment
    ipcamera
    쇼핑몰리뷰
    리뷰관리
    믈레코비타멸균우유
    codingcommunity
    리뷰이관
    rtsp
    유니티
    devlife
    리스트
    카페24리뷰
    스마트스토어리뷰
    programmerlife
    셀레니움
    cv2
    learntocode
    스크립트 실행 순서
    긴유통기한우유
    C#
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
데이터프레임의 인덱싱 : at, iloc, loc
상단으로

티스토리툴바