Pandas에서 데이터를 정렬하는 방법

Pandas에서 데이터를 정렬하는 방법

Pandas
Pandas에서 데이터를 정렬하는 방법
Author

gabriel yang

Published

August 29, 2024

데이터 분석에서 정렬(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()는 매우 유연하고 강력한 도구로, 데이터를 다양한 방식으로 정렬할 수 있습니다.