본문 바로가기

💻프로그래밍/python

[pandas] 4. 데이터 정렬 (sort_values, sort_index, by, ascending)

반응형

01. 데이터 값을 기준으로 데이터 정렬 :  sort_values( ) 

 

〰️ sort_values( ) 사용 방법

import pandas as pd
df1 = pd.read_csv('파일명')
df1.head()

 

먼저 판다스(pandas) 라이브러리를 임포트(import)하고, 사용할 데이터를 불러온다.

 

 

 

df['칼럼명'].sort_values()

 sort_values( ) 를 사용하여 특정 칼럼의 값을 정렬해보자. 전체 데이터 프레임 중에서 'Fare'의 데이터 값들을 정렬하기 위해  df1['Fare'].sort_values( ) 를 입력한 뒤 결과를 확인한다. 해당 코드는 'df1이라는 데이터 프레임 중 'Fare' 칼럼에 있는 값들을 정렬해줘!'라는 의미이다. 이때 기본적으로는 데이터 값은 오름 차순 정렬되며, 만약 칼럼에 NaN(결측치)가 있다면 그 값은 맨 마지막에 위치하게 된다. 한글이나 영어 같은 문자열에도 똑같이 적용할 수 있는데, 문자열의 오름 차순의 경우는 ㄱ,ㄴ,ㄷ 순으로, 또는 a, b, c처럼 알파벳 순으로 정렬된다.

 

 

 

 

만약 값을 내림차순 정렬하고 싶다면 sort_values( )의 괄호 안에  ascending = False 를 적어주면 된다. 결과를 출력했을 때 해당 값들이 내림차순으로 정렬되었으며, 이때도 마찬가지로 결측 값은 맨 마지막에 위치했음을 확인할 수 있다.

 

 

 

📌참고 <오름 차순 : 점점 커지도록 정렬 / 내림 차순 : 점점 작아지도록 정렬>

 

 

 


df.sort_values(by = '정렬의 기준이 되는 칼럼명')

이번에는 전체 데이터 프레임에서 'Fare'를 기준으로 값을 정렬해서 출력해보자.

 

위에서 연습했던 코드 df1['Fare'].sort_values( ) 는 특정 칼럼을 추출한 뒤, 그 값들을 정렬하는 것이었다면, df1.sort_values(by=['Fare']) 데이터 프레임에 있는 값을 전체적으로 정렬할것인데 그때 기준이 되는 칼럼이 'Fare'라는 의미이다. (즉, 'Fare'칼럼을 기준으로 정렬해!라는 의미) 이처럼 by = [  ] 의 괄호 안에 내가 기준으로 설정하고 싶은 칼럼명을 적어주면 된다.

 

 

 


🖐 실전 연습) df1에서 나이가 어린 순서대로, 지불한 금액은 큰 순서대로 정렬하라

(칼럼 'Age' 는 나이, 'Fare'는 지불한 비용을 나타내는 값이다.)

 

 

 

풀이

df1.sort_values(by=['Age','Fare'], ascending=[True,False])

df1에서 'Age' 와 'Fare'을 기준으로 정렬할 것이므로 by = [ ] 의 괄호 안에 해당 칼럼명을 적어준다. 그다음으로 나이가 어린 순서대로 정렬하는 것은 오름차순 정렬이므로  ascending = [ ] 에 True를, 비용을 많이 지불한 순서는 내림차순이므로 False를 적어주면 된다. 

 

 

 

 

02. 인덱스 값을 기준으로 데이터 정렬 :  sort_index( ) 

 

〰️ sort_index( ) 사용 방법

sort_values( )가 데이터 값을 기준으로 정렬하는 방법이었다면,  sort_index( ) 인덱스 값을 기준으로 정렬하는 방법이다. 해당 결과를 확인해 봤을 때 인덱스를 기준으로 정렬되었음을 알 수 있다.

 

 

 

TypeError: sort_index() got an unexpected keyword argument 'by'

 

sort_values( )는 데이터 값을 정렬 할 때 특정한 기준을 정해주어야 했다. 따라서 이러한 경우 by를 사용하여 정렬의 기준이 되는 칼럼을 설정해주었다. 하지만 sort_index에서는 인덱스 값이 기준이기 때문에 by를 사용할 수 없다.(이미 인덱스가 기준으로 잡혀있기 때문에 따로 기준을 설정할 필요 없음)

 

 

 

 

sort_index( )에서도 오름차순/ 내림차순은 설정할 수 있다. sort_values( )에서와 마찬가지로 ascending에 True(오름차순) 또는 False(내림차순)을 적어주면 된다.

 

 

 

반응형