Skip to content

Pandas DataFrame 인덱스로 정렬하기

Updated on

Pandas의 가장 강력한 기능 중 하나는 대량의 데이터를 쉽게 처리 및 조작할 수 있는 능력입니다. 이번 튜토리얼에서는 Pandas의 기본 메소드 중 하나인 sort_index() 메소드에 대해 설명합니다. 이 메소드를 사용하면 숫자 또는 문자열 기반의 인덱스를 기준으로 Pandas DataFrame을 정렬할 수 있습니다. 이번 튜토리얼을 마칠 때까지 sort_index() 메소드를 사용하여 데이터를 정렬하고 데이터 조작 기술을 향상시키는 방법을 정확하게 이해하게 될 것입니다.

하지만 sort_index() 메소드에 대해 자세히 알아보기 전에, Pandas DataFrame이 무엇인지 간략하게 살펴보겠습니다.

파이썬에서 빠르게 데이터 시각화를 하고 싶나요?

PyGWalker는 Jupyter Notebook 기반 환경에서 데이터 분석 및 시각화 워크플로를 빠르게 속도를 증가시킬 수 있는 오픈소스 파이썬 라이브러리입니다.

다음 코드를 사용하여 Pandas DataFrame (또는 Polars DataFrame)을 시각적인 UI로 변환하여 변수를 드래그하여 그래프를 쉽게 생성할 수 있습니다:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

PyGWalker를 지금 바로 실행할 수 있는 온라인 노트북은 다음과 같습니다:

그리고, GitHub에서 ⭐️ 버튼을 클릭해 주세요!

Kaggle Notebook에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)PyGWalker 깃허브 ⭐️ 누르기 (opens in a new tab)
Kaggle Notebook에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)PyGWalker 깃허브 ⭐️ 누르기 (opens in a new tab)

Pandas DataFrame이란?

Pandas DataFrame은 레이블링된 행과 열을 가진 2차원 테이블입니다. 이는 스프레드시트 또는 SQL 테이블과 유사합니다. DataFrame에서 행은 관찰 값 또는 레코드(Record)를 나타내고, 열은 변수 또는 속성(Feature)을 나타냅니다.

Pandas는 NumPy의 기반 위에 구축되어 대규모 데이터 집합을 처리하고 조작하는 데 매우 빠릅니다. 또한 데이터 정제, 데이터 조작 및 데이터 시각화에 대한 내장 메소드를 제공합니다.

이제 Pandas DataFrame의 기본 개념을 이해했으므로 sort_index() 메소드로 이동해 보겠습니다.

Pandas DataFrame 인덱스로 정렬하기

sort_index() 메소드는 Pandas DataFrame을 인덱스에 따라 정렬하는 데 사용됩니다. DataFrame의 인덱스는 스프레드시트에서의 행 번호와 유사합니다. DataFrame에서 각 행을 식별합니다.

그럼 예제를 살펴보겠습니다:

import pandas as pd 
 
# 딕셔너리 생성 
data = {'name': ['John', 'Mark', 'Sara', 'Anna', 'Paul'],
       'age': [24, 34, 21, 19, 26],
       'city': ['New York', 'Paris', 'London', 'Berlin', 'San Francisco']}
 
# 데이터프레임 생성 
df = pd.DataFrame(data, index=['b', 'a', 'd', 'c', 'e'])
 
# 인덱스를 기준으로 데이터프레임 정렬 
df = df.sort_index()
print(df)

결과:

    name  age           city
a   Mark   34          Paris
b   John   24       New York
c   Anna   19         Berlin
d   Sara   21         London
e   Paul   26  San Francisco

위의 예제에서 name, age, city 세 개의 키를 갖는 딕셔너리 data를 생성합니다. 이 딕셔너리를 사용하여 지정된 인덱스로 데이터프레임 df를 생성합니다.

데이터프레임을 생성한 후, sort_index() 메서드를 사용하여 데이터프레임을 인덱스별로 정렬합니다. 결과를 보면 sort_index() 메서드가 인덱스를 기준으로 데이터프레임을 오름차순으로 정렬합니다.

인덱스를 내림차순으로 정렬하려면 sort_index(ascending=False) 메서드를 사용할 수 있습니다.

# 인덱스를 내림차순으로 정렬
df = df.sort_index(ascending=False)
print(df)

결과:

    name  age           city
e   Paul   26  San Francisco
d   Sara   21         London
c   Anna   19         Berlin
b   John   24       New York
a   Mark   34          Paris

sort_index(ascending=False) 메서드가 데이터프레임을 내림차순으로 정렬하는 것을 볼 수 있습니다.

Pandas 시리즈 인덱스별 정렬

Pandas Series는 일차원 레이블이 지정된 배열입니다. 이는 스프레드시트의 컬럼과 비슷합니다. 데이터프레임과 마찬가지로 시리즈는 인덱스를 갖습니다.

시리즈를 인덱스 별로 정렬하려면 sort_index() 메서드를 사용할 수 있습니다.

import pandas as pd 
 
# create a dictionary 
data = {'name': ['John', 'Mark', 'Sara', 'Anna', 'Paul'],
        'age': [24, 34, 21, 19, 26]}
 
# create a Series 
s = pd.Series(data, index=['b', 'a', 'd', 'c', 'e'])
 
# sort the Series by index 
s = s.sort_index()
print(s)

결과:

a    {'name': 'Mark', 'age': 34}
b    {'name': 'John', 'age': 24}
c    {'name': 'Anna', 'age': 19}
d    {'name': 'Sara', 'age': 21}
e    {'name': 'Paul', 'age': 26}
dtype: object

위의 예제에서 nameage 두 개의 키를 갖는 딕셔너리 data를 생성합니다. 이 딕셔너리를 사용하여 지정된 인덱스로 시리즈 s를 생성합니다.

시리즈를 생성한 후, sort_index() 메서드를 사용하여 인덱스별로 시리즈를 정렬합니다. 결과를 보면 sort_index() 메서드가 인덱스를 기준으로 시리즈를 오름차순으로 정렬합니다.

data = {'age': [24, 34, 21, 19, 26],
        'city': ['뉴욕', '파리', '런던', '베를린', '샌프란시스코']}
 
# 데이터프레임 생성
df = pd.DataFrame(data, index=['b', 'a', 'd', 'c', 'e'])
 
# 데이터프레임에서 시리즈 선택
s = df['name']
 
# 시리즈를 인덱스를 기준으로 정렬
s = s.sort_index()
print(s)

결과:

a     Mark
b     John
c     Anna
d     Sara
e     Paul
Name: name, dtype: object

위 코드에서는 먼저 index를 지정하여 데이터프레임 df를 생성하였습니다. 그 후, 시리즈 s는 데이터프레임에서 name 열을 선택한 결과입니다. 마지막으로 sort_index() 메소드를 사용하여 시리즈를 인덱스를 기준으로 정렬하였습니다.

결론

이번 튜토리얼에서는 sort_index() 메소드를 사용하여 판다스 데이터프레임 또는 시리즈를 인덱스를 기준으로 정렬하는 방법을 배웠습니다. 이 방법은 대용량 데이터셋을 쉽게 정리하고 조작할 수 있는 강력한 기능입니다. 이번 튜토리얼이 도움이 되었기를 바랍니다.