16강 구글 colab 에서 코드 실행이 안돼요.
모든 예측 결과가 DB에 저장되었습니다.
predicted_stocks 테이블의 총 레코드 수: 0
총 0개 데이터를 성공적으로 가져왔습니다!
데이터 가져오기 오류: '날짜'
데이터를 가져오는데 실패했습니다.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipykernel_921/1990775403.py in <cell line: 0>()
520
521 # 3) Evaluate predictions
--> 522 evaluation_results = evaluate_predictions(data, target_columns, forecast_horizon)
523 print("============ Evaluation Results ============")
524 print(evaluation_results)
/tmp/ipykernel_921/1990775403.py in evaluate_predictions(data, target_columns, forecast_horizon)
382
383 # Check if the columns exist
--> 384 if predicted_col not in data.columns or actual_col not in data.columns:
385 print(f"Skipping {col}: Columns not found in data ({predicted_col}, {actual_col})")
386 continue
AttributeError: 'NoneType' object has no attribute 'columns'supabase api 키 입력해서 경제지표랑 주가를 supase에 자동으로 저장하는것까지 됐는데. ai 예측모델 하니까 저런식으로 나오네요..
답변 1
0
안녕하세요, @jkl님.
예측 모델 코드 문제가 아니라, 저장이 안 된 상태에서 그다음 단계가 줄줄이 무너진 겁니다. 보내주신 로그 네 줄이 순서대로 그걸 보여주고 있어요.
predicted_stocks 테이블의 총 레코드 수: 0← 저장되었다는 메시지는 떴지만 실제로 들어간 행이 0개입니다총 0개 데이터를 성공적으로 가져왔습니다!← 그래서 가져온 데이터도 0개데이터 가져오기 오류: '날짜'← 빈 데이터에는 '날짜' 컬럼이 없으니 여기서 실패'NoneType' object has no attribute 'columns'← 그 함수가 None을 돌려줘서 마지막에 터진 것
즉 1번만 해결되면 나머지는 저절로 풀립니다. 경제지표와 주가 저장이 잘 되셨다니 키와 연결은 정상입니다. predicted_stocks 테이블 쪽만 보시면 됩니다.
확인 순서
① Supabase에서 눈으로 확인하세요.
Table Editor에서 predicted_stocks 테이블을 열어보세요. 행이 하나도 없으면 저장이 실패한 게 맞습니다. 테이블 자체가 안 보이면 테이블 생성 SQL을 아직 실행하지 않으신 겁니다.
② 저장하는 셀의 응답을 직접 찍어보세요.
"저장되었습니다"는 응답을 확인하지 않고 출력되는 메시지라 믿으시면 안 됩니다. 저장 코드 뒤에 이렇게 한 줄 추가해 보세요.
response = supabase.table("predicted_stocks").insert(records).execute()
print(response)여기에 에러 내용이 그대로 찍힙니다. 컬럼명이 안 맞는지, 권한 문제인지 바로 보입니다.
③ RLS를 확인하세요. 이게 제일 흔한 원인입니다.
Supabase에서 테이블에 RLS(Row Level Security)가 켜져 있는데 정책이 없으면, 저장도 조회도 에러 없이 조용히 0건으로 돌아옵니다. 지금 증상과 정확히 같습니다.
Authentication → Policies에서 predicted_stocks의 RLS 상태를 보시고, 강의대로 진행하셨다면 service_role 키를 쓰고 계신지도 같이 확인해 주세요. 경제지표 테이블은 되는데 이 테이블만 안 된다면 테이블마다 설정이 다르게 들어갔을 가능성이 큽니다.
③번에서 해결되는 경우가 대부분입니다. 그래도 안 되면 ②번에서 찍힌 응답 전체와 Supabase 테이블 화면을 캡처해서 올려주세요. 바로 봐 드리겠습니다.
궁금한 점 생기면 언제든 편하게 또 보내주세요. 빠르게 답변드리겠습니다.
감사합니다.
0
jkl님, 제 설명이 부족했습니다.
지금 화면의 에러는 무시하셔도 됩니다
제가 드린 두 줄은 파이썬 코드인데 SQL Editor에 붙여서 난 문법 오류입니다. 붙일 위치를 제가 상세하게 전달드리지 못했네요.
72~73번째 줄은 그대로 지우시면 됩니다. 이번 실행은 통째로 실패해서 테이블에는 아무 영향이 없습니다.
그 코드는 추가하실 필요가 없습니다. 원래 코드가 이미 저장 결과를 출력하고 있습니다.
Colab 출력에서 이 줄을 찾아주세요
"모든 예측 결과가 DB에 저장되었습니다" 보다 위쪽, 학습 그래프가 나오기 전에 아래 둘 중 하나가 찍혀 있습니다.
"데이터베이스 저장 오류: ..." 이면 뒤에 적힌 내용이 진짜 원인입니다.
"0개의 예측 결과가 데이터베이스에 저장되었습니다" 이면 저장이 아니라 예측 결과 자체가 비어 있는 겁니다.
오류 문구별 해결
permission denied또는42501이 보이면 권한 문제입니다. RLS와는 별개라서 RLS를 꺼도 해결되지 않습니다. 아래 SQL을 Supabase에서 새로운 SQL Editor 창을 띄우시고, 붙여서 실행한 뒤 Colab을 다시 돌려주세요.
GRANT USAGE ON SCHEMA public TO anon, authenticated, service_role;
GRANT ALL ON ALL TABLES IN SCHEMA public TO anon, authenticated, service_role;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO anon, authenticated, service_role;Could not find the '...' column이 보이면 테이블 컬럼이 코드와 안 맞는 겁니다. 그 문구를 그대로 올려주세요."0개"로 나오면 Table Editor에서
economic_and_stock_data행 수를 알려주세요. 데이터가 너무 적으면 예측 결과가 비게 됩니다.
찾으신 줄을 그대로 복사해서 올려주시면 바로 이어서 봐드리겠습니다.
1
권한 문제 같지는 않아요


economic_and_stock_data 행은 충분히 많습니다. NULL 값때문에 AI가 분석을 못 하는 건가요? 해당 주식들이 초창기에는 상장이 안되서 NULL 값인거 같은데. 상장 된 뒤로부터는 NULL 값이 없어지고 값이 채워져는 있습니다.
0
네, 권한 문제가 아닙니다.
위 이미지에 첫 번째 캡처에 원인이 나와있는 것 같습니다.
학습 로그가 처음부터 loss: nan이고, 그 아래 "비어 있는 예측값 개수: 202149 / 202149"가 핵심입니다. 모델이 숫자가 아닌 값(NaN)을 입력받아 예측값이 전부 비었고, 코드가 빈 결과는 저장하지 않도록 돼 있어서 predicted_stocks가 0건이 된 겁니다. 그 뒤 에러들은 전부 여기서 나온 것이고요.
상장 전 NULL은 원인이 아닙니다. 제가 드린 CSV에도 메타는 2012년 5월, 테슬라는 2010년 6월 이전이 똑같이 비어 있습니다. 상장 전의 주가는 없는게 맞습니다. 코드가 데이터를 불러온 직후 앞뒤 값으로 채우기 때문에(df.ffill().bfill()) 이런 빈칸은 문제가 안 됩니다.
한 컬럼이 처음부터 끝까지 전부 NULL인 경우가 있는지 확인이 필요할 것 같습니다. 채울 값이 하나도 없으면 그대로 NaN으로 남아 학습이 깨집니다. 직접 수집하신 경우 Yahoo Finance가 특정 종목이나 지수를 못 받으면 서버 로그에 "No data found for ..."만 남기고 그 컬럼은 비워 둡니다. 화면에 보이는 메타·테슬라가 아니라, 옆으로 스크롤해야 보이는 다른 컬럼일 가능성이 큽니다.
확인 방법
데이터를 불러오는 셀 아래에 새 셀을 만들고 실행해 보세요.
df = pd.DataFrame(get_all_data("economic_and_stock_data"))
print(df.isna().mean().sort_values(ascending=False).head(10))값이 1.0인 컬럼이 비어있는 컬럼입니다. 그 결과를 올려주시면 어떤 컬럼이 빠졌는지 바로 알 수 있습니다.
19강 감정분석 강의처럼 api 돌렸는데
1
50
1
16강에서 코드가 계속 안도길래. ai가 고쳐서 일단 supabase에 preditc 한 주가를
1
45
1
강의 자료에 대한 질문입니다.
1
60
2
smithery filesystem mcp server
1
79
2
supabase url, key 값 확인방법
1
129
3
모의투자 주문이 불가한 계좌입니다.
0
267
2
미래에셋의 API 적용 가능성
1
2444
2
colab 실행시간이 너무 오래걸리는데 이게 맞을까요?ㅠ
1
1011
2
MCP 적용 안되시는분 이거 보세요.
2
279
2
mcp서버 설치 문의
0
140
2
13,14강 외부 API 설정 오류
0
232
3
fastapi를 이용한 뼈대 프로그램 소스 제공 가능 여부 문의드립니다. (6강_Python FastApi 기본)
0
179
1
[베개투자법 :자면서 돈버는 AI주식 자동매매머신] 종목을 100개까지 추가 하고자 합니다.
0
183
2
[베개투자법 :자면서 돈버는 AI주식 자동매매머신] 종목 변경시 코드 수정 부문을 알려주세요
1
172
2
종합 점수 계산시에 가중치 관련 질문
1
127
1
cursor 관련 질문
1
215
3
pip 설치 오류 문의
1
209
2
문의 드릴 메일 주소좀 알려주시면 감사하겠습니다.
1
155
2
파이선 설치 문제
0
373
2
경제 데이터 업데이트 중 오류 발생 문제
1
174
2
4.15, 4.16 강의를 따라하는데 주가 데이터가 이상합니다
1
244
3
경제지표 업데이트 오류
0
156
2
모의투자에서는 받은 API키로 잘되는데 실제 API키로 변경해서 사용하면 기간이 만료된 token 입니다 라고 표시됨
1
401
4
RSI 오류인지...
0
161
2







