데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong

동영상이 없는 텍스트 강의 자료입니다.

판다스에서 표의 인덱스를 바꾸는 방법을 알아보겠습니다.

import pandas as pd

열이 ab, 2개인 데이터 프레임을 만듭니다.

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df

ab
0 1 4
1 2 5
2 3 6

df의 인덱스를 확인합니다.

df.index

RangeIndex(start=0, stop=3, step=1)

df의 인덱스를 수동으로 설정합니다.

df.index = ['x', 'y', 'z']
df

ab
x 1 4
y 2 5
z 3 6

df의 특정 열을 인덱스로 사용하게도 할 수 있습니다.

df.set_index('b', inplace=True)
df

a
b
4 1
5 2
6 3

reset_index를 해서 인덱스를 초기화하면 인덱스가 0, 1, 2, ...으로 붙습니다.

df.reset_index(inplace=True)

DataFrame 에서는 원하는 인덱스를 설정하거나 리셋시킬 수 있습니다.

총 설정방법은 2가지와 리셋 1가지를 정리할 예정인데요. 다음과 같습니다.

1. 직접 배정 해주는 방법

2. set_index를 이용해 원래 있는 열을 인덱스로 배정하는 방법

3. reset_index를 이용해 인덱스 리셋

1. 직접 배정해 주는 방법

직접 배정해주려면 data와 갯수가 맞아야 합니다. 다음과 같은 메소드를 씁니다.

DataFrame.index= list

DataFrame.columns = list

list로 설정된 값이 인덱스로 들어가게 됩니다.

import numpy as np
import pandas as pd
ddf = pd.Dataframe(np.arange(0,16).reshape(4,4))
ddf
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong
ddf.index = ['r0','r1','r2','r3']
ddf.columns = ['c0','c1','c2','c3']
ddf
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong

지금 쓰고 있는 데이터의 행렬이 (4,4)이기 때문에 리스트 또한 4개로 맞춰서 할 수 있습니다.

2. set_index

set_index로 원래 있던 columns을 index로 불러들이는 방법입니다.

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

keys 에는 인덱스로 사용하려는 열의 레이블을 입력받습니다.

멀티 인덱스를 하려면 리스트형태로 값을 넣어주시면 됩니다.

drop은 인덱스로 쓸 열을 데이터 내에서 지울것인지 여부를 결정합니다.

append는 기존의 쓰던 인덱스를 삭제할지 여부를 결정합니다.

inplace는 원본 객체를 변경할지 여부를 결정합니다.

verify_integrity는 인덱스 중복여부를 체크하는 것인데 True로 하면 체크하는 시간 때문에 성능이 떨어집니다.

ddf.set_index('c0',drop=False)
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong
ddf.set_index('c3',append=True)
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong
ddf.set_index('c3',inplace=True)
ddf
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong
ddf.set_index(['c2','c3'],inplace=True)
ddf
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong

멀티인덱스는 리스트 형식으로 넣으면 됩니다.

3. reset_index

설정했던 인덱스를 초기화 해보겠습니다.

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')

drop과 inplace만 주로 쓰입니다.

level 은 인덱스에서 주어진 단계를 제거합니다. 기본값은 모든 단계를 제거합니다.

col_level은 멀티인덱스일 경우 어떤 것으로 삽입할것인지 설정합니다. 기본값이 0이어서 첫번째 것이 삽입됩니다.

col_fill은 멀티인덱스일 경우 어떻게 다른 단계의 이름을 붙일 것인지 설정합니다. 기본값은 '' 라서 안 붙여집니다. 

'None'으로 하면 인덱스 이름이 반복됩니다.

ddf
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong
ddf.reset_index()
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong
ddf.reset_index(drop=True)
데이터프레임 인덱스 설정 - deiteopeuleim indegseu seoljeong