안녕하세요. 이번 시간에는, Dataframe의 columns와 index를 어떻게 긁어오는지 알아보도록 하겠습니다.

 


 저번에 했던 도시와 인구가 들어있는 데이터를 그대로 가져와 보도록 하겠습니다.

 

 먼저, df와 df.columns와 df.index를 print 하고자 합니다. 어떻게 나올까요? columns는 City와 Population이고, index는 S, B, I, D, D 순서대로 있습니다. 결과를 보겠습니다.

 

 

 마지막에서 2번째 줄을 보시면 City하고 Population이 나왔음을 볼 수 있는데요. 제가 컬럼 값으로 설정한 것들입니다. 그리고, 맨 아랫 줄을 보시면, 'S', 'B', 'I', 'D', 'D'가 있는데요. 이는 1번째 행부터 5번째 행까지 labeling이 된 값을 의미합니다. 여기서 인덱싱을 하면 되지 않을까요?

 

 


 현재, 제 데이터 프레임에 있는 데이터는 다음과 같은 구조로 되어 있습니다.

 

 

 여기서 군청색으로 칠한 것은 라벨들입니다. 1번째 행의 라벨은 'S'이고, 2번째 행의 라벨은 'B'입니다. 그리고 1번째 열의 라벨은 'City'이고 2번째 열의 라벨은 'Population'입니다. 이것을 제거해 보겠습니다.

 

 

 그러면 이렇게 직사각형만 남는 것을 볼 수 있는데요. 몇 행 몇 열인가요? 5행 2열임을 알 수 있어요. 그래서, shape는 (5, 2)가 나옵니다. 몇 차원인가요? 2차원입니다.

 

 

 이제, 위 프로그램을 보겠습니다. 차원이 2차원이라 하였으므로, df.ndim은 2가 출력됩니다. Series인 경우에는 문서에 따르면 1을 출력한다고 되어 있어요. 2차원이니, df.shape[0]은 행이, df.shape[1]은 열이 출력될 겁니다. 행 갯수는 5, 열 갯수는 2이니, 11번째 줄의 결과는 5 2가 나옵니다.

 

 결과는 이리 나옵니다. 크기 먼저 확인하고 인덱싱을 하는 것이 중요하니, shape와 ndim을 먼저 확인해 보았습니다. 그 다음에, df.index와 df.columns에 대해서 인덱싱을 해 보겠습니다.

 

 

 df.index[i], df.columns[i]를 보시면 인덱싱을 했음을 알 수 있어요.행에 붙어 있는 라벨과 열에 붙어 있는 라벨들을 순차적으로 탐색하므로, 출력 결과는 아래와 같습니다.

 

 어렵지 않네요. 이를 이용하면, 인덱스가 unique하고, columns가 unique할 때 i번째 행을 삭제하거나, j번째 열을 삭제할 수 있을 겁니다.

 


 

 대구의 인덱스를 'Dg'로, 대전의 인덱스를 'Dj'로 셋팅하겠습니다. 그러면 인덱스들 중에서 중복된 인덱스가 없습니다. 3번째 원소인 Daegu를 삭제하려고 하는데요. drop 메서드는, index나 Column을 삭제하는 메서드입니다. index로 삭제할 라벨들인 ['Dg']를 넘겨주면 대구에 대한 데이터만 삭제되는데요. 저는 이 'Dg'를 리스트에 넣기 위해서, df.index[3]을 호출하였습니다. 인덱스의 3번째 요소는 'Dg'임을 알 수 있어요.

 

 axis가 0이면 행을, 1이면 열을 삭제하는데요. 행을 삭제한다고 했으니, axis에 0을 넣었습니다.

 

 

 위가 drop 실행 전, 밑이 drop 실행 후입니다. Daegu에 대한 데이터가 삭제되었음을 알 수 있습니다.