최근 기업과 공공기관 모두 실시간 데이터를 수집하고, 이를 예측 분석하는 자동화 파이프라인 구축에 큰 관심을 보이고 있습니다. 특히 Python + OpenAPI + 머신러닝 조합은 단순한 스크립트를 넘어서 데이터 기반 의사결정까지 연결할 수 있는 강력한 도구입니다.
이 글에서는 실제 사례를 기반으로, OpenAPI를 이용한 데이터 수집부터 pandas 전처리, scikit-learn 기반 모델 학습, 시각화, 자동화까지 엔드 투 엔드 분석 워크플로우를 완성해봅니다.
📌 바로가기 목차
1. Open API 구조 이해와 선택
실전 예제로는 도로교통공단의 실시간 교통량 OpenAPI를 선택했습니다. 이 API는 날짜별, 지역별 교통 흐름 데이터를 제공하며, 머신러닝 분석을 위한 시계열 구조로 되어 있어 예측 모델 학습에 적합합니다.
📌 주요 요청 요소:
- 요청 방식: REST API / GET
- 응답 포맷: JSON 또는 XML
- 필수 파라미터: 서비스키, 지역코드, 날짜, 측정 구간
- 출력 필드: 일자, 시간대, 차량 수, 평균속도 등
분석할 데이터가 API를 통해 어떤 구조로 제공되는지 이해하는 것이 매우 중요합니다. 응답 필드를 기준으로 어떤 피처를 추출하고, 어떤 분석이 가능한지를 미리 기획해보는 것이 좋습니다.
2. 파이썬으로 데이터 수집하기
이제 requests
라이브러리를 사용하여 도로교통공단 API에 요청을 보내고 데이터를 수집해보겠습니다. 결과는 JSON 형식으로 받아서 pandas DataFrame으로 변환 후 저장합니다.
import requests
import pandas as pd
API_KEY = "발급받은_서비스키"
url = "https://api.data.go.kr/traffic-info"
params = {
"serviceKey": API_KEY,
"pageNo": 1,
"numOfRows": 1000,
"type": "json",
"searchDate": "20240415",
"areaCode": "1100000000"
}
response = requests.get(url, params=params)
data = response.json()
# 응답 구조에 맞게 데이터 파싱
items = data['response']['body']['items']
df = pd.DataFrame(items)
df.to_csv("traffic_data.csv", index=False)
print("데이터 수집 및 저장 완료")
위 코드는 OpenAPI에서 교통량 데이터를 수집하고, CSV 파일로 저장하는 기본 흐름입니다. 다음 단계에서는 이 데이터를 전처리하여 예측에 활용할 수 있도록 구조를 정리할 예정입니다.
3. pandas로 전처리 및 정제
이제 수집한 원시 데이터를 pandas
를 사용해 분석에 적합한 형태로 정제하겠습니다. 일반적으로 날짜와 시간별로 분리된 데이터는 pivot
과 groupby
를 활용해 재구성해야 합니다.
# 데이터 불러오기 및 날짜 정제
import pandas as pd
df = pd.read_csv("traffic_data.csv")
df['date'] = pd.to_datetime(df['date_column']) # 날짜 컬럼 이름은 API에 맞게 수정
# 시간대별 평균 속도 계산
agg_df = df.groupby(['date', 'time_slot'])[['avg_speed', 'vehicle_count']].mean().reset_index()
# 예측 대상 값 정리
agg_df.rename(columns={"avg_speed": "target_speed"}, inplace=True)
agg_df.to_csv("traffic_cleaned.csv", index=False)
이제 머신러닝 모델 학습에 사용할 수 있는 깔끔한 시계열 데이터셋이 준비되었습니다. 다음은 이 데이터를 활용한 예측 모델 구축으로 넘어가겠습니다.
4. 머신러닝 모델 학습 및 예측
전처리된 데이터를 기반으로 scikit-learn
을 활용하여 머신러닝 모델을 학습시키고 예측 결과를 도출합니다. 여기서는 RandomForestRegressor
를 사용해 평균 속도(target_speed)를 예측합니다.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
# 전처리된 데이터 불러오기
data = pd.read_csv("traffic_cleaned.csv")
# 피처 및 타겟 설정
X = data[['vehicle_count']]
y = data['target_speed']
# 학습용, 테스트용 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 학습 및 예측
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
# 평가 지표 출력
mse = mean_squared_error(y_test, predictions)
print(f"평균 제곱 오차 (MSE): {mse:.2f}")
예측 모델은 교통량과 평균 속도 간의 관계를 학습하여, 향후 입력 데이터에 대해 평균 주행 속도를 예측할 수 있게 됩니다. 다음 섹션에서는 이 결과를 시각적으로 표현해 분석 인사이트를 도출합니다.
5. 예측 결과 시각화
모델의 예측 결과를 시각화하면 데이터 패턴을 더 명확히 이해할 수 있습니다. 특히 실제값과 예측값의 비교는 모델 성능 확인뿐 아니라 비즈니스 인사이트 도출에도 도움이 됩니다.
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 5))
plt.plot(y_test.values, label="실제 평균 속도", color='blue')
plt.plot(predictions, label="예측 평균 속도", linestyle='--', color='orange')
plt.title("실제 vs 예측 평균 주행 속도 비교")
plt.xlabel("샘플")
plt.ylabel("평균 속도 (km/h)")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
시각화된 결과를 통해 특정 시간대나 구간에서의 오차 패턴을 확인할 수 있으며, 이는 향후 피처 엔지니어링이나 모델 개선에 매우 유용한 인사이트를 제공합니다.
6. 전체 흐름 자동화하기
실무에서는 분석 과정을 수동으로 반복하기보다는 함수화하고 자동화하는 것이 중요합니다. 아래는 데이터 수집부터 예측 결과 시각화까지 전 단계를 하나의 파이프라인으로 구성한 예시입니다.
def run_traffic_prediction_pipeline(date_str):
df_raw = fetch_api_data(date_str)
df_clean = preprocess(df_raw)
model, mse = train_model(df_clean)
visualize_predictions(model, df_clean)
print(f"\\n[{date_str}] 분석 완료 - MSE: {mse:.2f}")
이 파이프라인은 정해진 날짜 데이터를 기준으로 자동으로 호출되며, 크론(Cron)이나 Task Scheduler, 혹은 Airflow 같은 워크플로우 관리 도구에 연결하여 매일 실행할 수 있습니다.
이처럼 파이썬 기반의 데이터 분석 자동화는 단순 반복을 줄이고, 분석 생산성과 품질을 동시에 높이는 핵심 전략입니다.
7. 자주 묻는 질문 (FAQ)
API 응답 데이터를 기반으로 예측, 분석, 대시보드 자동 업데이트, 보고서 작성 등 다양한 자동화 작업에 실무 적용이 가능합니다.
네, Airflow, Prefect, Github Actions, Azure Logic Apps 등 클라우드 또는 서버리스 환경에서 자동 워크플로우를 구성할 수 있는 다양한 솔루션이 존재합니다.
코드 기반이 가장 유연하지만, 노코드 도구로는 Microsoft Power BI, Google Data Studio, KNIME 등도 부분 자동화를 지원합니다. 단, 커스터마이징은 코드 기반이 우수합니다.
지금까지 Python과 OpenAPI를 활용한 머신러닝 분석 파이프라인 구축 방법을 살펴보았습니다.
단순한 스크립트를 넘어, 예측 자동화 시스템을 실무에 적용할 수 있도록 구성된 이 글이 많은 도움이 되셨기를 바랍니다.
'SW프로그래밍 개발 > Python' 카테고리의 다른 글
엑셀, 이메일, 크롤링까지 한 번에! 파이썬 자동화 프로젝트 (7) | 2025.08.13 |
---|---|
파이썬으로 보안 솔루션 엑셀 리포팅 툴 만들기(보고서 자동화) (3) | 2025.07.28 |
[파이썬]FastAPI로 초간단 REST API 서버 만들기 – 실습 중심 (3) | 2025.06.14 |