[Pandas] 판다스의 재색인(reindex)

J Lee·2024년 12월 15일
0

판다스_핵심 기능

목록 보기
1/7

판다스 핵심 기능

재색인

재색인의 정의와 기본 기능

판다스 객체(Series, DataFrame)의
중요한 기능 중 하나가 재색인reindex인데,
새로운 색인에 적합하도록 객체를 새로 생성하는 기능이다.

예를 들어 아래와 같은 Series가 있다고 하자.

이 Series 객체에 대해 reindex를 호출하면
데이터를 새로운 인덱스에 맞춰 재배열하고,
인덱스에 해당하는 값이 없을 경우에는 NaN을 반환한다.

새로운 인덱스 a,b,c,d,e에 맞게
값이 자동으로 재배열되고, 인덱스 e에 해당하는 값은 없으므로 NaN이 뜨는 것을 확인할 수 있다.

재색인 활용(method)

시계열 데이터같은 순차적인 데이터를 재색인할 때
값을 보간하거나 채워넣어야 하는 경우가 있다.
이럴 때 method 옵션을 사용해서 해결할 수 있으며,
ffill같은 메서드를 쓰면 누락된 값을 직전 값으로 채워넣을 수 있다.

아래는 예시.

index에 0, 2, 4밖에 없는 상태인데,
reindex를 써서 총 6개의 인덱스를 가진 Series로 바꾸고
새로 생성된 인덱스에 해당하는 빈 값들은
직전 값으로 채울 수 있다.

reindex의 인자로 넘파이 배열이 들어갈 수도 있다.
np.arange(6)에 따라 0부터 5까지로 인덱스가 변경되었고,
비어있는 1, 3, 5번 인덱스에 해당하는 값에는
ffill을 이용해 직전 값으로 채워주었다.
※ 참고 : 다음 값을 채워넣으려면 ffill 대신 bfill을 쓰면 된다.

DataFrame에서의 재색인

DataFrame에서의 재색인은 행이나 열 모두에 가능하다.
그냥 순서만 전달하면 알아서 행(또는 열)이 재색인된다.

아래는 행을 재색인하는 예시.


reindex의 결과로 b가 새로 추가되었고,
여기에는 해당하는 값이 없으므로
모두 NaN이 뜨는 것을 확인할 수 있다.

열을 재색인할 때는 예약어 columns를 쓰면 된다.

위의 frame에는 Ohio 열이 있었는데,
재색인 결과에 따라 Ohio가 빠지고 Utah가 추가되었다.
물론 Utah에 해당하는 값들이 없으므로 결과는 모두 NaN이다.

특정 축을 재색인하는 또 다른 방법

새로운 축 레이블을 인수로 넘긴 다음,
axis 키워드를 사용해 재색인할 축을 지정할 수도 있다.
아래는 예시.

위에서는 reindex(columns = states)로 썼지만
여기서는 states를 먼저 인수로 넣은 다음
axis = "columns"로 표기했다.

axis는 인덱스로 사용할 축(행 또는 열)을 지정하는데,
기본값은 행이다.

loc를 이용해서 재색인하는 것도 가능하며
많은 사용자들이 선호하는 방법이기도 하다.
다만, 이 방법은 모든 새로운 인덱스 레이블이
기존의 DataFrame 안에 존재할 때에만 가능하다.
(reindex 함수가 새로운 레이블에 대한 결측치를 삽입해주는 것과는 다르게)
아래는 예시.

기존 frame의 컬럼에서 Utah를 빼고
California와 Texas 순으로 변경한 결과다.

인덱스에 b를 넣으면 위와 같은 오류가 뜨는데,
위에서 언급한 대로 기존 DataFrame 안에
b라는 인덱스 레이블이 없어서 그런 것이다.
(reindex를 썼으면 b라는 행이 생성되고 NaN이 떴을 것)


기존 인덱스 레이블 내에서
순서를 변경하거나, 제외하는 것은 아무 문제 없다.

profile
기본기를 소홀히 하지 말자

0개의 댓글

관련 채용 정보