휴일정보를 특일정보 API를 활용해 받아오도록 수정,
This commit is contained in:
@ -1,4 +1,7 @@
|
||||
# weekly_visitor_forecast_prophet.py
|
||||
# 퍼스트가든 방문객 예측 프로그램
|
||||
# prophet를 활용한 예측처리
|
||||
|
||||
import os, sys
|
||||
import re, requests
|
||||
from sqlalchemy import select, and_, func
|
||||
@ -13,8 +16,8 @@ from datetime import date, datetime, timedelta
|
||||
# 경로 설정: 프로젝트 루트 conf 폴더 내 db 및 스키마 모듈 임포트
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
from conf import db, db_schema
|
||||
from weather_forecast import get_weekly_precip # 변경된 날씨 예보 함수 임포트
|
||||
from lib.holiday import is_korean_holiday # holiday.py의 DB 기반 휴일 판단 함수
|
||||
from lib.weather_forecast import get_weekly_precip
|
||||
from lib.holiday import is_korean_holiday
|
||||
from lib.common import load_config
|
||||
|
||||
# DB 테이블 객체 초기화
|
||||
@ -263,6 +266,31 @@ def train_and_predict_rf(df, forecast_days=7):
|
||||
future_df['pos_qty'] = model.predict(future_df[['weekday', 'minTa', 'maxTa', 'sumRn', 'avgRhm', 'pm25']])
|
||||
return future_df
|
||||
|
||||
# weekly_visitor_forecast_prophet.py 하단에 추가
|
||||
def get_forecast_dict(forecast_days=3) -> dict:
|
||||
"""
|
||||
오늘 기준 forecast_days일 만큼 방문객 예측 데이터를 계산해
|
||||
{'2025-07-11': 1020, '2025-07-12': 1103, ...} 형태로 반환
|
||||
"""
|
||||
today = datetime.today().date()
|
||||
start_date = today - timedelta(days=365)
|
||||
end_date = today
|
||||
|
||||
with Session(db.engine) as session:
|
||||
df = load_data(session, start_date, end_date)
|
||||
|
||||
prophet_df = prepare_prophet_df(df)
|
||||
forecast = train_and_predict_prophet(prophet_df, forecast_days)
|
||||
|
||||
result = (
|
||||
forecast[forecast['ds'].dt.date >= today]
|
||||
[['ds', 'yhat']]
|
||||
.copy()
|
||||
)
|
||||
result['ds'] = result['ds'].dt.strftime('%Y-%m-%d')
|
||||
return dict(result.values)
|
||||
|
||||
|
||||
def main():
|
||||
today = datetime.today().date()
|
||||
start_date = today - timedelta(days=365)
|
||||
|
||||
Reference in New Issue
Block a user