데이터 분석에서 정렬(Sorting)은 데이터를 이해하고 분석하는 데 중요한 단계입니다. Pandas는 Python을 사용하여 데이터를 효율적으로 정렬할 수 있는 강력한 기능을 제공합니다.
이 글에서는 Pandas의 sort_values()
와 sort_index()
메서드를 활용하여 데이터를 정렬하는 방법을 살펴보겠습니다.
1. sort_values()
를 사용하여 특정 열을 기준으로 정렬하기
sort_values()
메서드는 데이터프레임의 하나 이상의 열을 기준으로 데이터를 정렬할 수 있게 해줍니다. 기본적으로 오름차순(ascending)으로 정렬되지만, 매개변수를 통해 내림차순으로 정렬할 수도 있습니다.
import pandas as pd
# 예시 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'나이': [25, 32, 23, 35, 29],
'점수': [85, 88, 91, 79, 95]}
df = pd.DataFrame(data)
# 나이를 기준으로 오름차순 정렬
df_sorted = df.sort_values(by='나이')
df_sorted
2 |
Charlie |
23 |
91 |
0 |
Alice |
25 |
85 |
4 |
Eva |
29 |
95 |
1 |
Bob |
32 |
88 |
3 |
David |
35 |
79 |
위 코드에서는 나이
열을 기준으로 데이터를 오름차순으로 정렬합니다. 결과는 나이
가 작은 순서대로 정렬된 데이터프레임이 됩니다.
2. 내림차순으로 정렬하기
ascending=False
매개변수를 사용하여 데이터를 내림차순으로 정렬할 수 있습니다.
# 점수를 기준으로 내림차순 정렬
df_sorted_desc = df.sort_values(by='점수', ascending=False)
df_sorted_desc
4 |
Eva |
29 |
95 |
2 |
Charlie |
23 |
91 |
1 |
Bob |
32 |
88 |
0 |
Alice |
25 |
85 |
3 |
David |
35 |
79 |
여기서는 점수
열을 기준으로 내림차순 정렬을 수행합니다. 가장 높은 점수를 받은 사람이 맨 위에 표시됩니다.
3. 여러 열을 기준으로 정렬하기
sort_values()
메서드를 사용하면 여러 열을 기준으로 데이터를 정렬할 수 있습니다. 예를 들어, 먼저 나이
를 기준으로 오름차순 정렬하고, 점수
를 기준으로 내림차순 정렬하고 싶을 때 다음과 같이 할 수 있습니다.
# 나이 오름차순, 점수 내림차순으로 정렬
df_sorted_multiple = df.sort_values(by=['나이', '점수'], ascending=[True, False])
df_sorted_multiple
2 |
Charlie |
23 |
91 |
0 |
Alice |
25 |
85 |
4 |
Eva |
29 |
95 |
1 |
Bob |
32 |
88 |
3 |
David |
35 |
79 |
이 경우, 나이
가 동일한 경우에만 점수
를 내림차순으로 정렬합니다.
4. sort_index()
를 사용하여 인덱스를 기준으로 정렬하기
sort_index()
메서드는 데이터프레임의 인덱스를 기준으로 정렬할 때 사용됩니다. 이 메서드는 인덱스를 오름차순 또는 내림차순으로 정렬할 수 있습니다.
# 인덱스를 기준으로 오름차순 정렬
df_sorted_index = df.sort_index()
df_sorted_index
0 |
Alice |
25 |
85 |
1 |
Bob |
32 |
88 |
2 |
Charlie |
23 |
91 |
3 |
David |
35 |
79 |
4 |
Eva |
29 |
95 |
기본적으로 sort_index()
는 인덱스를 오름차순으로 정렬합니다. 만약 내림차순으로 정렬하고 싶다면, ascending=False
매개변수를 사용하면 됩니다.
# 인덱스를 기준으로 내림차순 정렬
df_sorted_index_desc = df.sort_index(ascending=False)
df_sorted_index_desc
4 |
Eva |
29 |
95 |
3 |
David |
35 |
79 |
2 |
Charlie |
23 |
91 |
1 |
Bob |
32 |
88 |
0 |
Alice |
25 |
85 |
5. 정렬된 데이터프레임의 인덱스 재설정하기
정렬 후 새로운 인덱스를 설정하고 싶을 때는 reset_index()
메서드를 사용할 수 있습니다. 이는 정렬된 결과에 따라 인덱스를 0부터 재설정해줍니다.
# 나이 기준으로 정렬 후 인덱스 재설정
df_sorted_reset = df.sort_values(by='나이').reset_index(drop=True)
df_sorted_reset
0 |
Charlie |
23 |
91 |
1 |
Alice |
25 |
85 |
2 |
Eva |
29 |
95 |
3 |
Bob |
32 |
88 |
4 |
David |
35 |
79 |
여기서 drop=True
는 기존 인덱스를 새로운 열로 추가하지 않고 삭제하는 옵션입니다.
6. 정렬된 데이터프레임을 원래 상태로 되돌리기
정렬된 데이터를 원래 순서로 되돌리고 싶다면, sort_index()
메서드를 사용하여 원래의 인덱스 순서로 정렬할 수 있습니다. 처음 데이터를 불러올 때 reset_index()
를 사용하지 않았다면, 인덱스는 그대로 유지되기 때문입니다.
# 원래의 인덱스 순서로 되돌리기
df_original = df_sorted.sort_index()
df_original
0 |
Alice |
25 |
85 |
1 |
Bob |
32 |
88 |
2 |
Charlie |
23 |
91 |
3 |
David |
35 |
79 |
4 |
Eva |
29 |
95 |
마무리
Pandas에서 데이터를 정렬하는 방법을 이해하면 데이터 분석 과정에서 중요한 통찰을 더 쉽게 얻을 수 있습니다. sort_values()
와 sort_index()
는 매우 유연하고 강력한 도구로, 데이터를 다양한 방식으로 정렬할 수 있습니다.