인덱스 정렬과 관련된 내용으로는 크게 두가지입니다.

인덱스를 순서에 따라 정렬하는 방법과, 인덱스를 순서대로 재설정 하는 방법입니다.

 

# 데이터프레임 생성
# 라이브러리는 구동되었다고 전제
df = pd.DataFrame({

    'a': [4, 5, 6],
    'b': [7, 8, 9],
    'c': [10, 11, 12]},
    index = [3, 2, 1]
)

df

인덱스 순서가 조금 이상해 보입니다.

오름차순 순서대로 정렬을 하고 싶다고 하면 우리는 sort_values와 비슷하게 index에 적용해보면 됩니다.

sort_index()처럼요.

해당 함수의 파라미터는 크게 세가지만 알면 됩니다.

1.행 인덱스인지 열 인덱스인지 (axis=0, axis=1) - 행 인덱스인 axis=0이 디폴트값입니다.

2.오름차순인지 내림차순인지 (ascending=True인 오름차순이 기본값입니다. False는 내림차순)

3.inplace=True (기존 데이터프레임에 적용하는 파라미터)

 

sort_values()를 하면 어떤 컬럼에 정렬하라는지 지정해줘야 됩니다.

그러나 인덱스는 unique한 값이기 때문에 단일 행 혹은 열에 대해서만 적용됩니다.

따라서 두가지의 인자를 입력할 필요가 없죠.

대신 앞에서 설명한대로 옵션(파라미터)는 조작할 수 있습니다.

df.sort_index()

sort_index()

인덱스가 정렬되었음을 볼 수 있습니다.

물론 값들의 순서도 인덱스에 붙어서 이동하기 때문에 전체적으로 행이 섞임을 알 수 있습니다.

 

나는 모든 값은 그대로 두고 인덱스값만을 바꾸겠다 할 경우에는?

다음 방법을 사용하면 됩니다.

(drop=True를 반환해주지 않으면 기존의 index가 컬럼으로 추가됩니다.)

df.reset_index(drop=True)

 

요약

인덱스를 정렬하는 방법은 크게 2가지가 있다.

1. 해당 인덱스를 순서대로 정렬하는 방법(값도 같이 움직임) - df.sort_index()

2. 인덱스를 초기화 해버리는 방법(값은 고정) - df.reset_index()  

파이썬 판다스 데이터프레임 정렬 방법 sort_values()

 

1. 데이터프레임에 대해 정렬하는 방법(특정 컬럼 기준으로)

2. 시리즈로 정렬하는 방법(하나의 열에 대해)

3. 내림차순으로 바꾸는 방법

4. 그리고 여러 컬럼을 리스트로 묶는 방법 

 


 

시작합니다.

라이브러리를 호출하고, 데이터프레임을 생성합니다.

import pandas as pd

df = pd.DataFrame([
    [16, 7, 10],
    [15, 8, 11],
    [14, 9, 12]],
    columns = ['a', 'b', 'c'],
    index = [1, 2, 3]
)
df

 

df

1. 컬럼 'a'를 기준으로 데이터프레임을 정렬해봅시다.

# 프레임의 정렬
df.sort_values('a')

결과가 데이터프레임으로 나타난다는 것이 보이시나요?

이 점이 중요합니다.

2. 컬럼 'a'를 기준으로 시리즈를 정렬해봅시다.

# 시리즈의 정렬
df['a'].sort_values()

결과창이 시리즈로 나타난다는게 보이시나요?

결국 df를 호출한 뒤 ('a')라는 인자에 대해 정렬을 원한다면 데이터프레임으로 나타나고,

df['a']자체를 호출한 뒤 정렬하면 시리즈로 나타난다는 점을 인지하셔야 됩니다.

 

 

3번째로는 정렬 차순의 설명입니다.

sort_values는 오름차순, 내림차순의 파라미터가 있습니다.

해당 파라미터는 ascending으로 지정되어 있는데 기본 디폴트 값은 True로 되어있습니다. 즉, 오름차순이라는 것이죠.

위의 예시에서 ascending = False로 지정하고 내림차순으로 살펴보겠습니다.

# 프레임의 정렬, 내림차순
df.sort_values('a', ascending=False)

컬럼 'a'의 결과가 14, 15, 16순이 아니라 그 반대인 것을 볼 수 있습니다.

 

4. 마지막으로는 여러 컬럼을 기준으로 정렬 순서를 정할 수 있다는 겁니다.

column 인자를 리스트로 반환하면 됩니다.

# 프레임의 정렬, 리스트로 반환
df.sort_values(['b','c'], ascending=False)

'b', 'c' 컬럼에 대해서 내림차순으로 정렬된게 보이시나요?

 

이렇게 4가지를 살펴보았습니다.

1. 데이터프레임에 대해 정렬하는 방법(특정 컬럼 기준으로)

2. 시리즈로 정렬하는 방법(하나의 열에 대해)

3. 내림차순으로 바꾸는 방법

4. 그리고 여러 컬럼을 리스트로 묶는 방법 

+ Recent posts