Pandas DataFrame 인덱스로 정렬하기
Published 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에서 ⭐️ 버튼을 클릭해 주세요!
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
위의 예제에서 name
과 age
두 개의 키를 갖는 딕셔너리 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()
메소드를 사용하여 판다스 데이터프레임 또는 시리즈를 인덱스를 기준으로 정렬하는 방법을 배웠습니다. 이 방법은 대용량 데이터셋을 쉽게 정리하고 조작할 수 있는 강력한 기능입니다. 이번 튜토리얼이 도움이 되었기를 바랍니다.