하파와 데이터

[빅분기] 실기 1유형- 데이터 정렬(sorting) 본문

자격증/DATA

[빅분기] 실기 1유형- 데이터 정렬(sorting)

hhpp 2024. 11. 29. 22:53

데이터는 가지런할때, 예쁘다. 

멀리서 보아도 그렇다. 

 

우리는 데이터를 여러 측면에서 본다. 

처음 주어진 그대로 살펴보기도 하지만, 

그 데이터가 가진 방향성, 의미 등을 파악하기 위해서 정렬을 해보기도하고

분포도를 보기도 하고 여러 방법을 택한다. 

 

그중에 가장 쉽고 가볍게 해볼 수 있는 정렬을 해보자. 

 

0. 전제

(6,4) 임의의 난수를 가진 데이터프레임을 생성하여 활용함. 

import pandas as pd
import numpy as np

dates = pd.date_range('20241129', periods=6)

df = pd.DataFrame(np.random.randn(6,4), index = dates, columns = list('ABCD'))

df

1. 인덱스 정렬

1.1. 행 인덱스 정렬

예를들어 날짜가 있는데, 날짜가 정리가 잘 안되어있다면? 

그때는 아래의 방법으로 정리를 하면 된다. 

예시를 위해, 12월 1일을 가장 위로 올림

df.sort_index(axis=0, ascending = True, inplace = True)
df

다시 날짜가 정렬이 되었음.

1.2 열 인덱스(컬럼명) 정렬

데이터를 봐야하는데, ABCD 컬럼으로 볼게 아니라, 

DCBA의 순서로 봐야 효율적이라고 생각이 든다면!! 

df.sort_index(axis = 1, ascending = False, inplace = True)
df

 

2. 컬럼 내 데이터를 기준으로 정렬하기 sort.values()

내가 가진 데이터에 연령데이터가 있는데, 나이순으로 보고싶거나

지역이 기준으로 있는데, 지역을 기준으로 정렬을 해서 보고싶다면? 

그때 사용하는 것이 바로 sort.values()이다! 

 

import pandas as pd
import numpy as np

dates = pd.date_range('20241129', periods = 6)

df = pd.DataFrame(np.random.randn(6,4), index = dates, columns = list('ABCD'))

print(df)

df = df.sort_values(by='A', ascending=False)
print('---변경 후 ---')
print(df)

그리고 이 sort_values()는 by 즉, 정렬 기준에 리스트로 묶어서 여러 컬럼을 한번에 넣을 수도 있다.

단, 넣는 순서가 정렬의 우선순위를 갖는다! 

df = df.sort_values(by=['B','C'], ascending = True)
df

반응형