데이터 분석에서 정렬(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()
는 매우 유연하고 강력한 도구로, 데이터를 다양한 방식으로 정렬할 수 있습니다.
Date
|
Title
|
Author
|
Jan 1, 3000
|
전체 카테고리
|
gabriel yang
|
Oct 3, 2024
|
Pandas에서 Column 추가 및 삭제하는 방법
|
gabriel yang
|
Oct 3, 2024
|
Pandas 데이터프레임 mongodb에 저장하기
|
gabriel yang
|
Sep 21, 2024
|
Pandas에서 결측치(NaN) 처리하기
|
gabriel yang
|
Sep 11, 2024
|
Pandas SQL 쿼리 이용하기
|
gabriel yang
|
Aug 29, 2024
|
Pandas에서 데이터 형식 변경하기
|
gabriel yang
|
Aug 29, 2024
|
Pandas에서 인덱싱 및 슬라이싱하는 방법
|
gabriel yang
|
Aug 27, 2024
|
Pandas SQL 데이터베이스 읽어오기
|
gabriel yang
|
Aug 26, 2024
|
Pandas groupby 사용방법
|
gabriel yang
|
Aug 26, 2024
|
Pandas에서 두 개의 데이터프레임을 연결하기
|
gabriel yang
|
Aug 24, 2024
|
Pandas에서 melt를 사용해야 하는 데이터 유형과 사용 방법
|
gabriel yang
|
Aug 24, 2024
|
Pandas에서 pivot_table 사용하기
|
gabriel yang
|
Aug 24, 2024
|
Pandas에서 reset_index를 사용해야 하는 이유
|
gabriel yang
|
Aug 22, 2024
|
Pandas Excel과 CSV 파일을 읽어오는 방법
|
gabriel yang
|
Aug 19, 2024
|
Pandas DataFrame의 컬럼 이름 변경하기
|
gabriel yang
|
Aug 17, 2024
|
Pandas SettingWithCopyWarning 문제 해결
|
gabriel yang
|
Nov 30, 2023
|
Dataframe을 Dict로 생성 및 변환
|
gabriel yang
|
Nov 29, 2023
|
python datetime 사용법 정리
|
gabriel yang
|
Sep 14, 2023
|
Pandas 중복 데이터 제거하기
|
gabriel yang
|
No matching items