ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2월 3주차-2/20(2)]미세먼지와 날씨 데이터 분석 및 시각화
    Why Not SW CAMP 5기/수업 기록 2025. 2. 20. 17:55

    미세먼지는 인간의 건강에 중요한 영향을 미치는 환경 요인 중 하나입니다. 본 포스트에서는 미세먼지(PM10, PM2.5)와 날씨(온도, 습도, 강수량, 풍속) 데이터를 결합하여 분석하고, 상관관계를 파악하는 과정을 소개하겠습니다.

    1. 데이터 불러오기 및 전처리

    먼저, 미세먼지 데이터와 날씨 데이터를 불러옵니다.

    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import numpy as np
    
    dust = pd.read_excel('data/dust.xlsx')
    dust.columns = ['date', 'so2', 'co', 'o3', 'no2', 'PM10', 'PM2.5']
    

    날짜 데이터 변환

    미세먼지 데이터의 날짜 정보를 연-월-일 형식으로 변환하고, 연도, 월, 일 칼럼을 추가합니다.

    dust['date'] = dust['date'].str[:11]
    dust['date'] = pd.to_datetime(dust['date'])
    
    dust['year'] = dust['date'].dt.year
    dust['month'] = dust['date'].dt.month
    dust['day'] = dust['date'].dt.day
    

    결측값 처리

    dust = dust.fillna(method='pad')
    dust.fillna(20, inplace=True)
    

    2. 날씨 데이터 불러오기 및 전처리

    날씨 데이터를 불러와서 필요 없는 칼럼을 제거하고, 날짜 형식을 통일합니다.

    weather = pd.read_excel('data/weather.xlsx')
    weather = weather.drop(['지점', '지점명'], axis=1)
    weather.columns = ['date', 'temp', 'wind', 'rain', 'humid']
    
    weather['date'] = pd.to_datetime(weather['date']).dt.date
    weather['date'] = weather['date'].astype('datetime64[ns]')
    weather['rain'] = weather['rain'].replace(0, 0.01)  # 0을 0.01로 대체
    

    3. 데이터 병합

    미세먼지 데이터와 날씨 데이터를 병합합니다.

    dust = dust.drop(index=743)
    df = pd.merge(dust, weather, left_index=True, right_index=True, how='inner')
    

    4. 데이터 분석 및 시각화

    1) 변수 간 상관관계 분석

    corr = df.corr()
    print(corr['PM10'].sort_values(ascending=False))
    

    2) 히스토그램을 통한 데이터 분포 확인

    df.hist(bins=50, figsize=(20,15))
    plt.show()
    

    3) 일별 미세먼지 평균 현황

    plt.figure(figsize=(15,10))
    sns.barplot(x='day', y='PM10', data=df, palette='Set1')
    plt.show()
    

    4) 변수 간 상관 관계 시각화 (히트맵)

    plt.figure(figsize=(15,12))
    sns.heatmap(data=corr, annot=True, fmt='.2f', cmap='hot')
    plt.show()
    

    5) 온도와 미세먼지의 관계 분석

    plt.figure(figsize=(15,12))
    x = df['temp']
    y = df['PM10']
    plt.plot(x, y, marker='o', linestyle='none', alpha=0.5)
    plt.title('온도와 미세먼지')
    plt.show()
    

    5. 결론

    • 미세먼지 농도와 다양한 환경 요인 간의 상관관계를 분석하였습니다.
    • 온도가 상승할 때 미세먼지 농도가 낮아지는 경향이 있음을 확인할 수 있습니다.
    • 강수량이 많을수록 미세먼지가 감소하는 패턴이 나타납니다.
    • 풍속이 강할수록 미세먼지가 희석되는 경향을 보였습니다.

    앞으로 추가적인 데이터를 확보하여 더욱 심층적인 분석을 수행할 계획입니다. 해당 분석 결과를 바탕으로 미세먼지 저감 정책 수립에 도움이 되었으면 합니다!

Designed by Tistory.