1. 국내주식/1-4. 오류 해결

(파이썬) ValueError: All arrays must be of the same length

봄이오네 2022. 10. 16. 08:06
반응형

1. 들어가며

키움증권 OpenAPI를 활용하여 주식거래원(opt10002)을 알아보기 위해
데이터프레임에서 데이터를 만든 후,
파이썬에서 출력을 하려고 하는데, 아래 오류가 발생한다.

오류의 주요 내용은 ValueError: All arrays must be of the same length 이다.
"배열의 길이는 모두 같아야 한다"는 내용이다.

단순히 문자 갯수를 말하는 것인가?
이해가 안되는 문장이다.

자칫 잘못 알아들으면, 데이터프레임 안의 문자는
"문자 갯수"가 같아야 한다는 말로 오해할 수도 있을거 같다.

< 그림1. 데이터프레임의 변수가 출력이 안된 오류 >


2. 오류 원인

오류 내용은 ValueError: All arrays must be of the same length 이다.
"배열의 길이는 모두 같아야 한다"는 내용이다.

쉽게 이야기하면, 구분이 6개이면 변수도 6개가 나와야 한다는 것이다.
(변수를 좀 더 정의하라고 하면 될 말을 "길이가 같아야 한다"고 하니,
당연히 오해가 발생할 수 밖에 없다)


3. 오류 예시 및 해결

1) 오류 예시

아래 <그림2>는 3줄에서 데이터프레임 형태를 갖추었다.
3줄이 조금 이상하지 않는지?
a는 변수가 3개(10,20,30)인데, b는 2개(70,80)이다.

이럴 때 발생하는 오류가 ValueError: All arrays must be of the same length 이다.

< 그림2. 오류 예시 >

 

2) 오류 해결

변수의 숫자를 a와 b를 각각 맞혀주어야 한다.
a는 3개 변수, b는 2개 변수였으므로, 임의의 숫자인 90을 넣어주면
오류가 발생하지 않는다.

< 그림3. b의 맨 끝에 임의의 숫자 90을 넣으니 오류 해결 >


4. 마치며

데이터프레임(DataFrame) 자료를 다룰 때는
좀 더 신경을 써야겠다.

키움증권 OpenAPI의 주식거래원(opt10002)에서 데이터를 받아오려고 하는데,
변수가 많다보니, 데이터 프레임에 잘못 넣었는데,
출력은 안되고,
위의 에러가 계속 나와서 2시간동안 헤매면서 속상해 했다.

향후 데이터프레임 자료를 활용할 때는,
자료의 흐름에 따라 데이터프레임 내
"내용"이 제대로 정의되었는지 확인해야겠다.

반응형