[python] loc, iloc 차이

2022. 4. 7. 15:23파이썬

iloc

- integer location의 약어로, 데이터 프레임의 행이나 칼럼의 순서를 나타내는 정수로 특정 값을 추출해오는 방법이다. loc는 칼럼명을 직접 적거나 특정 조건식을 써줌으로써 사람이 읽기 좋은 방법으로 데이터에 접근하는 방법이었다면, iloc는 컴퓨터가 읽기 좋은 방법으로(숫자로) 데이터가 있는 위치(순서)에 접근한다고 생각하면 쉬울 것이다.

'0번 행, 2번 칼럼' -> df.iloc[0,2]

- 정수형 값으로 데이터 추출(순서에 기반한 숫자)

df.iloc[0] -> 첫번째 행이 추출된다 :pandas.core.series.Series

일반 인덱스접근으로 하면 안되는 이유

         날짜  설비용량(MW)        경도        위도       발전기명  발전펌핑구분  01  02  03  04  \
0  20210709       0.7  37.05075  126.5103  당진자재창고태양광      10   0   0   0   0   

   ...        16      17      18     19    20  21  22  23  24       합계  
0  ...  382800.0  301248  186000  63216  6720   0   0   0   0  3045024  

dataframe에서 원하는 날짜와 일치하는 dataframe을 추출하려고 했었는데 위 데이터에서 20210709 다음날인 20210710데이터를 추출했을때

         날짜  설비용량(MW)        경도        위도       발전기명  발전펌핑구분  01  02  03  04  \
1  20210710       0.7  37.05075  126.5103  당진자재창고태양광      10   0   0   0   0   

   ...        16      17      18     19    20  21  22  23  24       합계  
1  ...  382800.0  301248  186000  63216  6720   0   0   0   0  3045024  

로 나온다.

크기는 [1 rows x 31 columns] 로 동일하지만 dataframe[0] 으로 접근시, 위 데이터는 첫번째 인덱스가 1부터 시작하기 때문에 오류가 발생한다.

따라서 iloc[0]의 순서가 있는 데이터 접근이 필요하다.

loc

- 인덱스 라벨 값 기반으로 데이터 추출

df.loc['2021-09-29'] -> 2021-09-29에 대응하는 행이 추출된다 : pandas.core.series.Series