반응형
loc와 iloc
위 두 문법은 기본적으로 Pandas에서 특정 행이나 열을 추출할 때 사용합니다.
1. loc
- location의 약자입니다.
- Pandas Docs에는 'Access a group of rows and columns by label(s) or a boolean array.'라고 되어 있습니다. 다시 말하면, 레이블 값으로 데이터프레임의 행이나 칼럼을 고를 수 있다는 것입니다.
- 우선 데이터를 불러옵니다.
df_boston.head(1)
- 두 가지 방법이 있지만 두 번째 방법이 확장성측면(다른 열을 추가적으로 가져올 때 등)에서 더 편리합니다.
# 첫 번째 방법
result = df_boston.loc[:3, 'CRIM' : 'INDUS']
result
# 두 번째 방법
result = df_boston.loc[0:3, ['CRIM', 'ZN', 'INDUS']] # 확장성 측면
result
2. iloc
- integer location의 약어입니다.
- loc와 다르게 숫자로 데이터에 접근합니다. 아무래도 사람보단 컴퓨터 친화적인 방법인 느낌이죠?
- 위와 같은 결과를 만드는 코드입니다.
result = df_boston.iloc[0:4, 0:3] # list slicing과 동일
result
3. loc와 iloc 중에 무엇을 쓰는 게 좋을까?
- 뭐든 개인이 편한 것 쓰는 게 제일 좋습니다.
- 하지만 loc를 더 선호하는 편입니다. 확장성 측면에서 그렇습니다.
- 다음의 조건문을 써서 데이터의 일부를 추출하였습니다.
result = df_boston.loc[(df_boston['INDUS'] >= 5.0), ['CRIM', 'ZN', 'INDUS']].reset_index(drop=True)
result
- 마찬가지의 방법으로 iloc에 적용하면 어떨까요?
result = df_boston.iloc[(df_boston['INDUS'] >= 5.0), 0:3].reset_index(drop=True) # error가 뜸
result
- 가독성을 위해 다음과 같이 코드를 정리하는 것도 좋습니다. 코드는 혼자 보는 게 아니니까요.
result = df_boston.loc[(df_boston['INDUS'] >= 5.0) & (df_boston['B'] >=394) # 행
, ['CRIM', 'ZN', 'INDUS']].reset_index(drop=True) # 열
result.head(1)
'Python > Pandas, Matplotlib, Seaborn' 카테고리의 다른 글
[Visualization]_데이터 변환-그래프로 확인하기 (0) | 2023.08.30 |
---|---|
[Pandas]_Pandas library basic (4) 날짜 데이터 / shift (0) | 2023.08.09 |
[Pandas]_Pandas library basic (3) 결측치를 어떻게 처리할까? 데이터 전처리 (0) | 2023.08.09 |
[Pandas]_Pandas library basic (1) I/O, 행과 열 추출 (0) | 2023.08.09 |