반응형
데이터프레임에서 데이터를 접근하는 방법에는 여러 가지가 있지만, 가장 중요한 세 가지 메서드는 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 |