Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas - Index.view() 메서드로 새로운 뷰(View) 만들기

Pandas Index의 새로운 뷰(view)를 생성하려면 index.view() 메서드를 사용합니다. 뷰는 원본 데이터와 동일한 메모리를 공유하면서 다른 dtype으로 데이터를 해석할 수 있게 해주는 강력한 기능입니다.

기본 사용법

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

Pandas 인덱스를 생성합니다.

index = pd.Index([50, 10, 70, 110, 90, 50, 110, 90, 30])

생성된 Pandas 인덱스를 출력해 확인합니다.

print("Pandas Index...\n", index)

view('uint8')을 호출하여 새로운 뷰를 만듭니다. 이렇게 하면 기존 int64 데이터를 부호 없는 8비트 정수 관점에서 바라보게 됩니다.

res = index.view('uint8')

새로 생성된 뷰를 출력합니다.

print("\nThe new view...\n", res)

뷰는 원본과 동일한 기본 값을 공유하므로, 특정 위치의 값에 접근할 수 있습니다.

print("\nView for 0th index...\n", res[0])
print("\nView for 1st index...\n", res[1])

전체 예제 코드

다음은 지금까지 설명한 내용을 모두 포함한 완전한 코드입니다.

import pandas as pd

# Pandas 인덱스 생성
index = pd.Index([50, 10, 70, 110, 90, 50, 110, 90, 30])

# Pandas 인덱스 출력
print("Pandas Index...\n", index)

# 인덱스에 포함된 요소 개수 반환
print("\nNumber of elements in the index...\n", index.size)

# 데이터의 dtype 객체 반환
print("\nThe dtype object...\n", index.dtype)

# 새로운 뷰 생성
res = index.view('uint8')

# 새로운 뷰 출력
print("\nThe new view...\n", res)

# 원본과 동일한 기본 값을 공유
print("\nView for 0th index...\n", res[0])
print("\nView for 1st index...\n", res[1])

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Pandas Index...
Int64Index([50, 10, 70, 110, 90, 50, 110, 90, 30], dtype='int64')

Number of elements in the index...
9

The dtype object...
int64

The new view...
[ 50 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 70 0
  0 0 0 0 0 0 110 0 0 0 0 0 0 0 90 0 0 0
  0 0 0 0 50 0 0 0 0 0 0 0 110 0 0 0 0 0
  0 0 90 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0]

View for 0th index...
50

View for 1st index...
0

결과 해석

출력 결과를 보면 흥미로운 점을 발견할 수 있습니다. 원본 인덱스는 9개의 int64(64비트) 요소를 가지고 있지만, uint8(8비트) 뷰로 변환하면서 각 요소가 8개의 바이트로 분해되어 총 72개의 값으로 확장되었습니다.

  • res[0]의 값은 50으로, 첫 번째 int64 값(50)의 최하위 바이트(little-endian 방식)를 나타냅니다.
  • res[1]의 값은 0인데, 이는 첫 번째 값 50이 8비트 범위(0~255) 안에 있어 상위 바이트가 모두 0이기 때문입니다.
  • 만약 110처럼 255를 초과하는 값이 있다면, 해당 값은 여러 바이트에 걸쳐 저장됩니다.

이처럼 view() 메서드는 데이터 복사 없이 동일한 메모리를 다른 데이터 타입으로 재해석할 때 유용하게 활용됩니다.