안양 부림동 공기질 분석 및 예측 프로젝트
2025. 5. 15. 16:53ㆍ프로젝트
github link : https://github.com/Thingjae98/pm_modeling
🔍프로젝트 개요
거주하고 있는 안양의 대기질 데이터를 활용하여 주요 대기오염 물질의 패턴을 파악하고, 이를 바탕으로 초미세먼지(PM2.5) 농도를 예측하는 프로젝트입니다.
최근 미세먼지 이슈가 커짐에 따라, 대기오염의 특성과 예측 가능성을 데이터 기반으로 분석했습니다.
🛠 사용 기술 스택
언어 | Python |
데이터 처리 | Pandas, NumPy |
시각화 | Matplotlib, Seaborn |
모델링 | scikit-learn (Linear Regression, Random Forest) |
개발 환경 | Jupyter Notebook |
데이터 출처 | OpenAQ (실시간 대기오염 데이터) |
📁 데이터 소개
- 기간: 2025년 5월 1일 ~ 5월 13일 / 안양시 부림동 지역 데이터
- 주요 항목:
- parameter: 대기오염 물질 종류 (pm10, pm25, co, no2, so2, o3)
- value: 오염 농도 (단위: ppm, µg/m³)
- datetimeLocal: 측정 시각 (KST)
- 전처리 과정:
- 이상치(9999) 제거
- 결측치 제거
- 날짜 기준 정렬 및 시간 파생 변수 생성 (hour, weekday)
df[df['value'] >= 9999]
# 이상치 값을 np.nan으로 변경
df.loc[df['value'] >= 9999, 'value'] = np.nan
# 각 parameter별 평균값으로 결측치 채우기 (이상치 대체)
df['value'] = df.groupby('parameter')['value'].transform(lambda x: x.fillna(x.mean()))
# 데이터 형태 변경
pivot_df = df.pivot_table(index='date', columns='parameter', values='value')
pivot_df = pivot_df.reset_index().sort_values('date')
🔍 주요 분석 내용
1️⃣ 시계열 분석
PM2.5와 PM10의 시간별 변화를 살펴본 결과, 일중 시간대에 따라 변화가 뚜렷하게 나타났습니다.
출근 시간대(8-10시)와 15시에 농도가 높아지는 경향
2️⃣ 시간대별 평균 분석
- PM 계열 (pm10, pm25): 출근/퇴근 시간과 주중에 상대적으로 높음
- 가스 계열 (co, no2): 교통량이 많은 시간대에 비례해 상승
3️⃣ 상관관계 분석
- PM2.5는 PM10, CO와 높은 양의 상관관계
- NO2와도 일정 부분 상관관계를 가짐
- 이를 통해 교통량과 관련된 오염물질이 PM2.5에 영향을 줄 수 있음
corr = df.drop(columns=['hour', 'weekday']).corr(numeric_only=True)
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Heatmap between Pollutants')
plt.tight_layout()
🤖 예측 모델링
🎯 목표: PM2.5 농도 예측
모델 | 오차(MSE) | 설명력( R²) |
선형 회귀 | 19.75 | 0.71 |
랜덤 포레스트 회귀 | 10.97 | 0.84 |
- 📌 랜덤 포레스트 모델이 훨씬 더 정확하게 예측하는 성능을 보였습니다.
# 선형 회귀
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)
y_pred = lr_model.predict(X_test)
# 랜덤 포레스트
rf_model = RandomForestRegressor(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
y_rf_pred = rf_model.predict(X_test)
📉 예측 시각화:
📌 분석 인사이트
- 출퇴근 시간 및 요일(주중/주말) 이 대기오염 수준에 영향을 미친다.
- PM10, CO와 같은 교통 관련 오염 물질이 PM2.5에 큰 영향을 준다.
- 머신러닝 모델(특히 랜덤 포레스트)을 통해 향후 대기질 예측 가능성을 확인했다.
✍ 마무리 및 확장 방향
이 프로젝트는 거주 지역인 안양의 대기질 예측을 위한 작은 시도였지만,
향후에는 다음과 같은 확장이 가능합니다.
- 지역 확장 (서울 전역 or 전국)
- 날씨 데이터 (기온, 강수 등) 결합
- 딥러닝 모델 (LSTM 등)을 통한 시계열 예측
'프로젝트' 카테고리의 다른 글
서울시 공공자전거 데이터를 활용한 수요 분석 및 예측 (0) | 2025.05.10 |
---|---|
전기차 커뮤니티 데이터 분석 프로젝트 (0) | 2025.05.08 |
COVID-19 확진자 예측: 전통적 모델 vs 딥러닝 (0) | 2025.05.08 |
Tableau 실력향상 프로젝트 (0) | 2025.03.30 |
Olist 데이터 분석 프로젝트 (1) | 2025.03.30 |