녕녀기의 실험일지

[ Pandas ] sort_values()를 이용한 Dataframe 정렬 본문

-- Data --/- Python -

[ Pandas ] sort_values()를 이용한 Dataframe 정렬

녕녀기 2023. 6. 22. 16:43

본문으로

안녕하세요. 녀기입니다.

 

pandas를 사용해서 데이터를 다루다 보면

 

오름차순이나 내림차순 등으로 정렬할 필요가 있습니다!!!

 

그 중에서도 제가 맨날 까먹는 그 메서드ㅋㅋㅋㅋㅋ

 

그것을 정리해 놓을까 합니다.

 

그럼 가보시죠~


sort_values()

아래와 같이 데이터프레임을 하나 만들어 봅시다.

import pandas as pd
tt = pd.DataFrame(data=[['f','g','c','d'],
                        ['i','b','c','h'],
                        ['f','j','a','b']], 
                columns=['1', '2', '3', '4'])

 

위의 사진처럼 데이터프레임이 형성된 것을 확인하실 수 있을 것입니다.

 

이제 sort_values()를 사용해 데이터프레임을 정렬해 볼까요?

 

컬럼 이름이 '2'인 컬럼을 기준으로 오름차순 정렬해 봅시다.

 

아래와 같이 코드를 작성하면,

tt.sort_values(by=["2"],axis=0)

 

컬럼 '2'의 데이터를 기준으로 오름차순 정렬된 것을 확인하실 수 있습니다.

 

'by' 파라미터에는 정렬 기준으로 삼을 컬럼이나 인덱스를 입력합니다. 

 

'axis' 파라미터는 정렬될 축을 지정합니다. 컬럼의 데이터를 기준으로 행이 순서가 바뀌게 됩니다.

tt.sort_values(by="1",axis=0)

 

by 뒤에 리스트 형태로 지정할 수 있지만, 기준을 하나만 삼을 때는 위와 같이 리스트 형태로 쓰지 않아도 됩니다. ↑

 

인덱스의 데이터를 기준으로 정렬할 수도 있습니다.

 

아래와 같이 인덱스를 0으로 지정하면 0번 인덱스에 있는 데이터가 c → d → f → g 순서로 정렬됩니다.

 

이 때 axis=1로 바꿔주세요. ↓

tt.sort_values(by=0, axis=1)

 

오름차순이 아닌 내림차순으로 정렬하고 싶을 때는, 아래와 같이 ascending 파라미터에 False를 입력해 주세요.

tt.sort_values(by='1', axis=0, ascending=False)

 

컬럼명이 '1'인 컬럼을 내림차순으로 정렬하고 보니,

 

컬럼명이 '1'인 컬럼의 f가 두 개 있습니다.

 

이때, f가 동일한 두 인덱스의 순서를, 컬럼명이 '2'인 컬럼의 내림차순으로 정렬하고 싶습니다.

 

ascending 파라미터에 bool 값을 리스트 형태로 넣어주면 됩니다.

 

순서의 경우, 먼저 입력한 컬럼을 기준으로 합니다.

 

아래 코드의 경우, '1' 컬럼을 기준으로 정렬한 뒤, 동일한 값이 있으면 '2' 컬럼을 기준으로 정렬될 것입니다.

tt.sort_values(by=['1','2'], axis=0, ascending=[False,False])


이렇게 정리를 해 놨으니 까먹을 일은 없을 겁니다(?)

 

이랬는데도 잊어버리면......

 

뭐 그건 어쩔 수 없겠죠?ㅋㅋㅋㅋ

 

여기로 다시 돌아올 수 밖에...

 

(while True....)

Comments