Appia의 IT세상

파이썬[Python] Pandas, DataFrame의 데이터 정렬하기(Sort) 본문

Python/Python Pandas

파이썬[Python] Pandas, DataFrame의 데이터 정렬하기(Sort)

Appia 2020. 4. 1. 07:31
반응형

Pandas에서는 아시다시피 DataFrame을 매우 중요한 역할입니다. 하지만, 사용자가 원하는 데이터 값을 얻고자 한다면 반드시 정렬하는 등의 값이 필요로 합니다. 이 부분에 대해서는 크게 2가지 형태로 정렬할 수 있습니다. 크게 Column, Row의 인덱스(Label)을 바탕으로 정렬할 수 있습니다. 또한 값을 바탕으로 정렬할 수 있습니다. 그 방법에 대해서 살펴보겠습니다. 

 

그럼 다음 예시에 보이는 데이터 값을 바탕으로 정렬를 진행해보고자 합니다. 

example) 

import pandas as pd
 
udf=pd.DataFrame([[11,21],[14,24],[12,22],[13,23],[10,20],[15,25]],
 
                         index=[1,4,2,6,3,0], columns=['N2','N1'])
 
print (udf)
cs

result) 

   N2  N1
   
1  11  21
 
4  14  24
 
2  12  22
 
6  13  23
 
3  10  20
 
0  15  25
cs

 

Column, Row의 Label을 바탕으로 정렬

먼저 Row의 붙여 있는 Label을 바탕으로 정렬하는 방법에 대해서 살펴보겠습니다. 기존 위의 함수와 동일 데이터를 사용해서, sort_index()를 사용하면 Row기반의 Label에 따라 값을 정렬합니다. 

example)

import pandas as pd
 
udf=pd.DataFrame([[11,21],[14,24],[12,22],[13,23],[10,20],[15,25]],
 
                         index=[1,4,2,6,3,0], columns=['N2','N1'])
 
sdf=udf.sort_index()
 
print (sdf)
cs

result)

   N2  N1
   
0  15  25
 
1  11  21
 
2  12  22
 
3  10  20
 
4  14  24
 
6  13  23
cs

 

내림차순으로 정렬하기 

앞서 본 기본 정렬방식은 오름차순입니다. 만약 row기반의 레이블을 토대로 내림차순으로 정렬하고자 한다면, ascending=False을 sort_index()안에 입력해 주시길 바랍니다. 그러면 내림차순 기반으로 정렬하게 됩니다. 

import pandas as pd
 
udf=pd.DataFrame([[11,21],[14,24],[12,22],[13,23],[10,20],[15,25]],
 
                         index=[1,4,2,6,3,0], columns=['N2','N1'])
 
sdf=udf.sort_index(ascending=False)
 
print (sdf)
cs

result) 

   N2  N1
   
6  13  23
 
4  14  24
 
3  10  20
 
2  12  22
 
1  11  21
 
0  15  25
cs

위와 같이 Row기반으로 정렬을 했습니다. 

 

column기반으로 정렬하기 

그럼 이번에는 Column 기반으로 데이터를 정렬해보도록 하겠습니다. 앞서서도 많이 봤지만, axis=1를 인자 값으로 입력해 주세요. 그럼 Column 통째로 정렬이 됩니다. 

example) 

import pandas as pd
 
udf=pd.DataFrame([[11,21],[14,24],[12,22],[13,23],[10,20],[15,25]],
 
                         index=[1,4,2,6,3,0], columns=['N2','N1'])
 
sdf=udf.sort_index(axis=1)
 
print (sdf)
cs

result) 

   N1  N2
   
1  21  11
 
4  24  14
 
2  22  12
 
6  23  13
 
3  20  10
 
0  25  15
cs

 

위와 같은 방법으로 Row/Column기반으로 정렬하는 방법에 대해서 살펴봤습니다. 

 

값 기반으로 정렬하기 

그럼 이번에는 값 기반으로 정렬하는 방법에 대해서 살펴보겠습니다. 이번에는 예시를 먼저 한번 보고 이야기 해보도록 하겠습니다. 

example)

import pandas as pd
 
udf=pd.DataFrame([[11,21],[14,24],[12,22],[12,23],[12,20],[15,25]],
 
                         index=[1,4,2,6,3,0], columns=['N2','N1'])
 
sdf=udf.sort_values(by=['N2','N1'])
 
print (sdf)
cs

result)

   N2  N1
   
1  11  21
 
3  12  20
 
2  12  22
 
6  12  23
 
4  14  24
 
0  15  25
cs

 

by 인자는 필수 값입니다. 즉, 기준이 되는 Column Label을 입력해 주시면 됩니다. 만약 2개를 입력하시다면, 먼저 앞서 기준으로 정렬하고, 그후에 그다음에 오는 Column Label을 바탕으로 정렬하게 됩니다. 위의 예를 보면 N2를 보고 정렬한 후에 동일 값이 나온다면 N2를 바탕으로 정렬하게 됩니다.

 

이번 포스팅에서는 DataFrame을 정렬하는 방법에 대해서 살펴봤습니다. 크게는 2가지형태로 Row/Column의 label을 토대로 정렬하는 방법과 값을 토대로 정렬하는 방법에 대해서 살펴봤습니다. 혹 궁금하시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments