본문 바로가기
Python/Pandas

pandas ValueError: Shape of passed values is (x,y), indices imply (z,w) 오류 해결하기

by PySun 2025. 5. 1.
반응형

소개

Pandas를 사용하다 보면 정말 다양한 오류를 만나게 되는데, 그 중 하나가 바로 'ValueError: Shape of passed values is (x,y), indices imply (z,w)'입니다. 이 오류는 주로 DataFrame을 생성할 때 넘겨준 데이터의 형태와 인덱스(열, 행)의 형태가 일치하지 않을 때 발생합니다. 이제 이 오류에 대해서 알아보고, 해결 방법을 살펴보겠습니다.

에러 발생 예시 코드

먼저, 해당 오류가 발생할 수 있는 간단한 예제 코드를 보겠습니다.

import pandas as pd

# 데이터와 인덱스를 정의
data = [[1, 2, 3], [4, 5]]  # 데이터의 형태가 불균형적임
index = ['A', 'B']

# DataFrame 생성
df = pd.DataFrame(data, index=index)
print(df)

에러 해결 방법

1. 구조를 일치시키기

가장 먼저 확인해야 할 것은 데이터와 인덱스의 구조가 일치하는지 여부입니다. 데이터가 균형을 이루도록 수정해야 합니다.

import pandas as pd

# 데이터와 인덱스를 정의, 데이터 구조를 수정
data = [[1, 2, 3], [4, 5, 6]]  # 동일한 행의 수를 유지
index = ['A', 'B']

# DataFrame 생성
df = pd.DataFrame(data, index=index)
print(df)

2. 데이터 형태 확인하기

때때로 데이터 배열의 형태를 확인하는 것이 중요합니다. numpy의 `shape` 속성을 활용해 데이터 구조를 체크해보세요.

import pandas as pd
import numpy as np

# 데이터 정의
data = np.array([[1, 2, 3], [4, 5]])  # 비정상적인 형태
print("Shape of data:", data.shape)

# 일반적인 인덱스 정의
index = ['A', 'B']

# DataFrame을 생성 시도
try:
    df = pd.DataFrame(data, index=index)
except ValueError as e:
    print("Error:", e)

3. 열(column) 통일성 유지하기

같은 열 수를 가진 각 행을 갖도록 데이터를 조정하여 문제를 해결하세요. Pandas DataFrame은 모든 행이 동일한 길이를 가져야 합니다.

import pandas as pd

# 각 행에 대해 동일한 열 수 유지
data = [[1, 2, 3], [4, 5, 6]]  # correct shape
columns = ['X', 'Y', 'Z']  # 열 이름 정의

# DataFrame 생성
df = pd.DataFrame(data, columns=columns)
print(df)

마무리

이 블로그 글에서는 Pandas에서 발생할 수 있는 'ValueError: Shape of passed values is (x,y), indices imply (z,w)' 오류의 원인과 해결 방법에 대해 다루었습니다. 데이터의 형태를 확인하고 조정함으로써 이 오류를 간단히 해결할 수 있습니다. Pandas를 사용할 때는 항상 데이터의 구조를 일관되게 유지하는 것이 중요하다는 것을 잊지 마세요!

반응형