본문 바로가기

파이썬 100일 챌린지

[100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 2탄 (loc와 iloc 차이) #027

 

DataFrame에서 행을 조회하는 방법은 loc이다. (#026 참고)

[100일 챌린지] 파이썬 pandas 자료형 DataFrame 완전 정복 1탄 (다시 기초부터!) #026

 

그런데 가끔 iloc도 사용된다.

loc와 iloc의 차이는 무엇일까? 

 

다시 아래 엑셀 파일로 테스트해보자. 

 

엑셀 샘플 파일

 

pandas로 엑셀을 읽어와 iloc를 해보면, loc로 호출한 내용과 동일하다.

(loc 내용은 #026을 참고해 주세요)

 

차이가 없는데....

 

 

1. DataFrame에서 인덱스를 지정한다면?

 

#024에서 인덱스 칼럼을 지정했었다. (B열 '지출목적별')

[100일 챌린지] 엑셀을 읽어 간단하게 그래프 그리기 (인덱스 지정, 열 삭제) #024

 

그리고 나서 loc를 호출해보면...

 

에러가 난다...

 

위 내용 때문에 멘붕이 왔다. 

loc면 다 되는거 아니었냐규!!!

 

 

pandas.pydata.org에 가보면 함수의 차이를 알 수 있다. 

[100일 챌린지] pandas.pydata.org 에서 pandas API 찾기 #025

 

DataFrame.loc Purely label-location based indexer for selection by label.
DataFrame.iloc Access group of rows and columns by integer position(s).
- pandas.pydata.org - 

 

loc는 label 기반, iloc는 숫자 위치 기반이라는 것을 알 수 있다. 

 

index_col로 인덱스 칼럼을 지정했기에 인덱스가 더 이상 숫자가 아닌 것이다. 

따라서, 아래처럼 인덱스 명을 넣어주어야 한다.

 

인덱스가 달라졌다.

 

그런데 인덱스 명을 모를 수 있고, 위치로만 알고 싶을 때는?

그때 iloc를 이용하면 된다. 

 

loc와 동일한 결과값이다.

 

 

책에서 알려주는 대로 따라 했지만, 결국 이렇게 API 레퍼런스를 확인해보게 되는...ㅋㅋ

 

 

728x90