Skip to content

Pandas DataFrame 인덱스: 초보자를 위한 가이드

데이터 과학자라면 이미 가장 인기있는 데이터 분석 도구 중 하나인 Python의 Pandas 라이브러리에 익숙할 것입니다. Pandas는 데이터프레임(DataFrames) 및 Series와 같은 강력한 데이터 구조를 비롯한 구조화된 데이터를 처리하기위한 다양한 기능을 제공합니다.

이 튜토리얼에서는 Pandas DataFrame을 다루는 핵심적인 측면 중 하나인 인덱스에 초점을 맞춥니다. 우리는 인덱스가 무엇이며, 왜 중요한지, 그리고 효과적인 방법은 무엇인지에 대해 다룰 것입니다.

Pandas DataFrame에서 코딩 없이 빠르게 데이터 시각화를 만들고 싶습니까?

PyGWalker는 시각적 탐색을 위한 tableau-alternative 사용자 인터페이스에 pandas dataframe (및 polars dataframe)을 추가하여 Jupyter 노트북 데이터 분석 및 데이터 시각화 작업 흐름을 간소화하는 Python 라이브러리입니다. PyGWalker (opens in a new tab)

PyGWalker for Data visualization (opens in a new tab)

DataFrame 인덱스란?

먼저 기본이 되는 것으로 DataFrame 인덱스가 무엇인지 설명하겠습니다. 인덱스는 Pandas DataFrame의 행(row)과 열(column)에 라벨(label)을 지정하는 방법입니다.

인덱스는 고유 식별자(set of unique identifiers)의 집합으로 데이터의 특정 행에 빠르고 효율적으로 액세스할 수 있는 방법을 제공하는 주요한 요소입니다. 또한 인덱스는 수치 또는 수치가 아닌(예: 날짜/시간 값) 값이 될 수 있음을 유의해야 합니다.

인덱스는 DataFrame의 불가결한 부분으로, 인덱싱(indexing), 선택(selection), 필터링(filtering)을 포함한 많은 Pandas 연산에서 광범위하게 사용됩니다.

DataFrame 인덱스 설정하기

기본적으로 Pandas DataFrame은 0에서 시작하여 DataFrame의 총 행 수까지의 숫자 인덱스를 가지고 있습니다. 그러나 사용 사례에 따라 다른 열(column)에 인덱스를 설정할 수 있습니다.

예를 들어, 서로 다른 지역의 판매 데이터를 포함한 DataFrame이 있다면 '지역' 열(column)에 인덱스를 설정하여 특정 지역의 데이터를 쉽게 필터링하고 선택할 수 있습니다.

DataFrame의 인덱스를 설정하기 위해 set_index() 메서드를 사용할 수 있습니다. 예를 들어, sales_data라는 DataFrame에서 '지역' 열(column)에 인덱스를 설정하려면 다음과 같은 코드를 사용할 수 있습니다.

sales_data = sales_data.set_index('region')

또한 index 매개변수를 사용하여 DataFrame을 처음부터 생성할 때 인덱스를 설정할 수도 있습니다. 예를 들어, 날짜가 아닌 인덱스가 있는 판매 데이터의 데이터프레임을 생성하려면 다음과 같은 코드를 사용할 수 있습니다.

import pandas as pd
 
sales_data = pd.DataFrame({
    'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
    'sales': [100, 200, 150]
}, index=['2022-01-01', '2022-01-02', '2022-01-03'])

DataFrame 인덱스 사용하기

DataFrame에 인덱스를 설정한 후, 데이터를 필터링하고 선택하는 등의 작업에 사용할 수 있습니다. 가장 일반적인 작업 중 하나는 인덱스 기반의 인덱싱입니다.특정 인덱스 값에 따라 특정 행을 선택하는 방법.

특정 인덱스를 기반으로 행을 선택하려면 loc [] 메소드를 사용할 수 있습니다. 예를 들어 'region' 열을 인덱스로 설정한 'sales_data' DataFrame이 있고 'Northeast' 지역의 모든 판매 데이터를 선택하려는 경우 다음 코드를 사용할 수 있습니다:

northeast_sales = sales_data.loc['Northeast']

특정 기준에 따라 DataFrame을 필터링하기 위해 인덱스를 사용할 수도 있습니다. 예를 들어 'Northeast' 및 'West' 지역의 판매 데이터 만 포함하도록 DataFrame을 필터링하려는 경우 다음 코드를 사용할 수 있습니다:

northeast_west_sales = sales_data.loc[['Northeast', 'West']]

다중 수준 인덱스

일부 경우에는 DataFrame에 두 개 이상의 인덱스를 사용해야 할 수 있습니다. 이를 다중 수준 인덱스라고 하며 데이터를 계층적으로 구성할 수 있습니다.

예를 들어, 여러 지역의 여러 연도에 대한 판매 데이터가있는 경우 'region' 열을 첫 번째 수준으로, 'year' 열을 두 번째 수준으로 사용하는 다중 수준 인덱스를 사용할 수 있습니다.

다중 수준 인덱스가 있는 DataFrame을 만들려면set_index () 메소드를 여러 번 사용할 수 있습니다. 예를 들어 'region', 'year' 및 'sales'라는 다음 열이있는 'sales_data' DataFrame이 있다면 다음 코드를 사용하여 다중 수준 인덱스를 만들 수 있습니다.

sales_data = sales_data.set_index(['region', 'year'])

다중 수준 인덱스가 있는 DataFrame이 있는 경우 'Northeast' 지역 2022의 모든 판매 데이터를 선택하려면 다음 코드를 사용할 수 있습니다.

northeast_2022_sales = sales_data.loc[('Northeast', 2022)]

DataFrame 인덱스 사용자 정의

어떤 경우에는 기본 숫자 또는 열 기반 인덱스가 데이터에 가장 적합하지 않을 수 있습니다. 다행히 Pandas는 인덱스를 사용자 정의하는 다양한 옵션을 제공합니다.

예를 들어 사용자 정의 함수 또는 공식을 기반으로 숫자가 아닌 인덱스를 만들고 싶을 수 있습니다. 이를 위해 'Index.map ()' 또는 'Index.from_tuples ()' 메소드를 사용할 수 있습니다.

import pandas as pd
 
# 사용자 지정 인덱스가 포함된 DataFrame 만들기
data = pd.DataFrame({
    'x': [1, 2, 3],
    'y': [4, 5, 6]
}, index=[1, 4, 7])
 
# 공식을 사용하여 사용자 지정 인덱스 만들기
custom_index = data.index.map(lambda x: x * 10)
 
# 사용자 정의 인덱스를 사용하여 새 DataFrame 만들기
new_data = pd.DataFrame({
    'x': [4, 5],
    'y': [7, 8]
}, index=[40, 50])

결론

이 튜토리얼에서는 Pandas DataFrame 인덱스의 기본 사항과 효율적인 방법을 다루었습니다. 인덱스 설정, 인덱스를 사용하여 데이터 선택(다중 수준 인덱스 포함) 및 데이터에 적합한 인덱스 사용자 정의 등을 다루었습니다.

이 튜토리얼에서 얻은 지식으로 Pandas DataFrame 인덱스를 사용하여 데이터 분석 및 시각화를 최적화 할 수 있습니다. 이 튜토리얼이 도움이 되었기를 바라며, 궁금한 점이나 의견이 있으면 언제든지 문의해주세요!

추가 읽기 및 참고 자료:

자주 묻는 질문

  1. DataFrame의 인덱스란 무엇인가요?

    pandas의 DataFrame의 인덱스는 각 행을 고유하게 식별하는 레이블입니다. 데이터에 접근하고 조작하며 조작을 수행하는 방법으로 기능합니다. 기본적으로 DataFrame에는 0부터 시작하는 숫자 인덱스가 할당되지만 특정 열이나 다른 기준을 기반으로 한 사용자 정의 인덱스를 가질 수도 있습니다.

  2. DataFrame은 몇 개의 인덱스를 가질 수 있나요?

    pandas의 DataFrame은 다중 인덱스 또는 계층적 인덱스라고도하는 여러 개의 인덱스를 가질 수 있습니다. 이를 통해 각 행을 복잡한 레이블이나 레벨 조합으로 고유하게 식별할 수 있는 복잡한 데이터 구조가 가능해집니다. DataFrame이 가질 수 있는 인덱스의 수는 고정되지 않으며 구체적인 데이터 및 요구 사항에 따라 다를 수 있습니다.

  3. DataFrame에 인덱스를 추가하는 방법은 무엇인가요?

    pandas에서는 set_index() 메서드를 사용하여 DataFrame에 인덱스를 추가할 수 있습니다. 이 메서드를 사용하면 DataFrame의 하나 이상의 열을 새로운 인덱스로 지정할 수 있습니다. 또한, reset_index() 메서드를 사용하여 현재의 인덱스를 제거하고 기본적인 숫자 인덱스로 다시 설정할 수도 있습니다. 이러한 메서드를 사용하면 DataFrame의 인덱스를 유연하게 관리하고 조작할 수 있습니다.