[판다스 입문/인덱스 활용]

2022. 10. 14. 07:10

목차

 

1. 특정 열을 행 인덱스로 설정

2. 행 인덱스 재배열

3. 행 인덱스 초기화

4. 행 인덱스를 기준으로 데이터프레임 정렬

 

 


특정 열을 행 인덱스로 설정

 

DataFrame 객체.set_index(['열 이름'] 또는 '열 이름')

set_index() 메소드를 사용하여 데이터프레임의 특정 열을 행 인덱스로 설정헌다.

원본 데이터를 바꾸지 않고 새로운 데이터프레임 객체를 반환하는 점에 유의.

 

# 예제 1-16

import pandas as pd

exam_data = {
    '이름': ['서준', '우현', '인아'],
    '수학': [90, 80, 70],
    '영어': [98, 89, 95],
    '음악': [85, 95, 100],
    '체육': [100, 90, 90]
}

df = pd.DataFrame(exam_data)
print(df)
print('\n')

ndf = df.set_index(['이름'])
print(ndf)
print('\n')

ndf2 = df.set_index('음악')
print(ndf2)
print('\n')

ndf3 = df.set_index(['수학', '음악'])
print(ndf3)

ndf3은 특이한 경우로 2개의 열을 행 인덱스로 지정한 경우이다.

이런 경우를 멀티인덱스라고 한다.

set_index() 메소드를 사용하여 행 인덱스를 새로 지정하면 기존 행 인덱스는 삭제된다.

 

예제 1-16 출력 결과

 

 

행 인덱스 재배열

 

DataFrame 객체.reindex(새로운 인덱스 배열)

reindex() 메소드를 사용하면 데이터프레임의 행 인덱스를 새로운 배열로 재지정할 수 있다.

기존 객체를 변경하지 않고 새로운 데이터프레임 객체를 반환한다.

 

# 예제 1-17

import pandas as pd

dict_data = {
    'c0': [1, 2, 3],
    'c1': [4, 5, 6],
    'c2': [7, 8, 9],
    'c3': [10, 11, 12],
    'c4': [13, 14, 15]
}

df = pd.DataFrame(dict_data, index=['r0', 'r1', 'r2'])
print(df)
print('\n')

new_index = ['r0', 'r1', 'r2', 'r3', 'r4']
ndf = df.reindex(new_index)
print(ndf)
print('\n')

new_index = ['r0', 'r1', 'r2', 'r3', 'r4']
ndf2 = df.reindex(new_index, fill_value=0)
print(ndf2)

기존 데이터프레임에 존재하지 않는 행 인덱스가 새롭게 추가되는 경우, 그 행의 데이터값은 NaN값이 입력된다.

이럴 경우, reindex()fill_value 옵션에 원하는 값을 입력하면 그 값으로 채워진다.

 

예제 1-17 출력 결과

 

행 인덱스 초기화

 

DataFrame 객체.reset_index()

행 인덱스를 정수형 위치 인덱스로 초기화한다.

이때 기존 행 인덱스는 열로 이동한다.

새로운 데이터프레임 객체를 반환한다.

 

# 예제 1-18

import pandas as pd

dict_data = {
    'c0': [1, 2, 3],
    'c1': [4, 5, 6],
    'c2': [7, 8, 9],
    'c3': [10, 11, 12],
    'c4': [13, 14, 15]
}

df = pd.DataFrame(dict_data, index=['r0', 'r1', 'r2'])
print(df)
print('\n')

ndf = df.reset_index()
print(ndf)

 

예제 1-18 출력 결과

 

 

행 인덱스를 기준으로 데이터프레임 정렬

 

DataFrame 객체.sort_index()

ascending 옵션을 사용하여 오름차순 또는 내림차순을 설정할 수 있다.

새롭게 정렬된 데이터프레임을 반환한다.

 

# 예제 1-19

import pandas as pd

dict_data = {
    'c0': [1, 2, 3],
    'c1': [4, 5, 6],
    'c2': [7, 8, 9],
    'c3': [10, 11, 12],
    'c4': [13, 14, 15]
}

df = pd.DataFrame(dict_data, index=['r0', 'r1', 'r2'])
print(df)
print('\n')

ndf = df.sort_index(ascending=False)
print(ndf)

오름차순 정렬은 ascending=True 옵션을, 내림차순 정렬은 ascending=False 옵션을 사용한다.

 

예제 1-19 출력 결과

 

 

특정 열을 기준으로도 데이터프레임을 정렬할 수 있다.

DataFrame 객체.sort_values()

이 경우 sort_values() 메소드를 사용한다.

마찬가지로 새롭게 정렬된 데이터프레임 객체를 반환한다.

 

# 예제 1-20

import pandas as pd

dict_data = {
    'c0': [1, 2, 3],
    'c1': [4, 5, 6],
    'c2': [7, 8, 9],
    'c3': [10, 11, 12],
    'c4': [13, 14, 15]
}

df = pd.DataFrame(dict_data, index=['r0', 'r1', 'r2'])
print(df)
print('\n')

ndf = df.sort_values(by='c1', ascending=False)
print(ndf)

 

예제 1-20 출력 결과

 


파이썬 머신러닝 판다스 데이터분석
저자 : 오승환
출판 : 정보문화사
발매 : 2019.06.05

 

BELATED ARTICLES

more