728x90
SMALL
- 오늘은 MySQL 과정을 마무리하며, ASA(american Standards Association: 미국 규격 협회)에서 2009년에 공개한 미국 항공편 운항 통계 데이터를 가지고 분석 프로젝트를 진행했습니다.
✈️ 미국의 항공기 운항 실태 조사
- 저희는 아래 8가지 공통 주제와 1가지의 선택 주제를 가지고 데이터 분석을 진행해보았습니다.
- 지연을 최소화하려면 비행에 가장 적합한 시간대 / 요일 / 시간은 언제일까?
- 오래된 비행기일수록 지연이 더 잦을까?
- 시간이 지남에 따라서 다양한 장소들을 비행하는 사람의 수는 어떻게 변할까?
- 날씨는 비행기 지연을 얼마나 잘 예측할 수 있을까?
- 한 공항의 지연으로 인해 다른 공항의 지연이 발생하는 연쇄적 실패를 감지할 수 있을까?
- 9/11 사건의 이전과 이후 비행 패턴을 비교해보자!
- 가장 자주 비행하는 두 도시 간을 오가는 모든 항공편을 비교해보자!
- 시카고(ORD) 항공과 같은 주요 공항을 오가는 모든 항공편을 비교해보자!
- (+추가) 어느 달에 비행기가 가장 많이 운행할까?
✨ 데이터에는 어떤 변수들이 있을까?
- 우선 메인 데이터에는 총 29개의 컬럼이 존재했는데, 연도, 월, 일, 요일같은 기본적인 시간 변수들과, 실제 출발, 실제 도착, 실제 경과 시간을 비롯해, 예정 시간들도 기록되어 있었습니다.
- 이외에도 항공사, 항공편, 출발지, 도착지 공항 코드들과 비행 취소나 우회 여부, 그리고 각종 지연 시간 컬럼이 포함되어 있었습니다.
- 추가적으로 제공되는 데이터도 총 3개 있었는데, 각각 데이터는 공항의 위치, 항공사 코드에 따른 실제 항공사명, 항공기의 등록 번호에 따른 항공기 정보 데이터들이었습니다.
✨ 데이터 수집 및 전처리하기
💡 수집 및 통합
- 먼저 시작하기 전에 여러 해(1987년~2008년)에 걸쳐서 제공된 CSV 파일들을 하나의 통합 데이터셋으로 결합하는 작업을 진행했습니다.
- 일단 1987년부터 1999년까지의 데이터와 2000년부터 2008년까지의 데이터가 별도의 폴더에 존재해서 따로따로 병합시키려고 했으나...
- 사실 이 통합 과정에서 시간이 가장 많이 걸렸던 것 같습니다. 전체 데이터만 해도 1억 건이 넘어가는 데이터였기 때문에 통합해서 사용하기에는 너무 벅찼어서 필요한 컬럼들만 추출하는 작업도 진행했습니다.
- 그래서 주제에 맞는 ArrDelay, DayOfWeek, TailNum, DepTime 등의 변수만을 추출했고, 관련해서 결측치를 제거 및 대체하거나 이상치를 제외해서 보는 등의 필터링을 거쳤습니다.
- 특히 이 과정에서 2001년과 2002년 파일이 읽히지 않는 오류가 발생했었는데, 인코딩 값을 'latin-1'로 설정했더니 해결하기도 했습니다.
💡 데이터 전처리
- 결측치는 dropna() 함수를 활용하여 필수 컬럼에 결측치가 있는 행을 제거하거나, 유아 수 같은 컬럼에 NaN 값이 많았는데 계산을 통해 관련 값을 넣는 등의 작업을 진행했습니다.
- 이상치는 항공편 번호(FlightNum)의 경우 사분위 범위(IQR)를 활용해 극단치를 제거하는 등의 방법으로 데이터의 분포를 정상화했고, 실제 지연 상황을 반영하기 위해 ArrDelay(도착 지연 시간) 값이 0 이상인 데이터만 선택하는 등의 필터링 처리도 해보았습니다.
- 특히 2번 주제같은 경우에는 다른 데이터와의 조인(병합)이 추가적으로 필요했기 때문에, 항공기 등록번호(TailNum)를 기준으로 해당 항공기의 제작 연도와 연결하는 작업도 진행되었습니다.
✨ 분석 주제와 결과들은?
- 팀원별로 주제를 분담하여 진행했기 때문에 제가 맡은 주제(4번, 5번) 이외 주제들은 간단하게 결론만 언급하고 넘어가보도록 하겠습니다.
💡 최적의 비행 시간대 및 요일 분석
- 이 주제는 지연 건수를 최소화할 수 있는 최적의 출발 요일과 시간대를 확인하는 것에 목표를 두고 있었습니다.
- 그래서 ArrDelay(출발 지연 시간) 값이 0 이상인 데이터만 선택해서 실제 지연 현황을 반영할 수 있었고, 요일과 시간대를 기준으로 그룹화 및 빈도수를 계산했습니다.
- 결과적으로 요일은 금요일이 가장 지연 건수가 적었으며, 토요일이 그 뒤를 잇게 되었습니다.
- 시간대는 21시 이후 지연 건수가 감소하는 반면, 5시 이후 급증하는 패턴을 보입니다. 당연하게도 실제 운행 시간이랑 관련 있는 것 같습니다!
- 그래서 비운행 시간을 제외한다면, 오전 10시와 오후 15~16시 출발 항공편이 상대적으로 안정적인 것으로 분석되었습니다.
💡 항공기의 연식과 지연 빈도 간 관계 분석
- 먼저 항공기 등록번호(TailNum)를 기반으로 별도의 항공기 정보 데이터(제작 연도)와 매핑 작업을 진행했고, 결측치 제거 / 연도별 분포를 데이터 기반으로 파악해보았습니다.
- 전체적으로 오래된 항공기와 지연 건수 간 명확한 상관관계를 찾기 어려웠으나, 특정 연도(2007년)는 지연 사례가 급증하는 양상이 나타나는 것으로 보아 추가 연구를 통해서 항공기 제작 연도와 운영 상태, 정비 주기 등의 연관성을 더 면밀히 조사할 필요가 있다고 판단되었습니다.
💡 시간에 따른 항공편 운항 패턴의 변화
- 여러 해에 걸친 항공편 운항 횟수의 추이를 분석하기 위해서 먼저 사분위 범위를 이용해 이상치들을 제거하였습니다.
- 데이터를 보면 1988년부터 2000년까지 항공편 수는 꾸준히 증가하다가 2001년 9/11 테러 이후 급감하고, 2002년에 최저점을 기록한다는 것을 확인했습니다.
- 이후에는 2003년부터 회복되면서 2005년에는 이전 수준을 회복하는 모습을 보이게 되었습니다.
💡 날씨와 지연 간의 상관관계 분석
- 기상 지연(WeatherDelay) 변수가 출발 및 도착 지연에 어떤 영향을 미치는지 탐색하는 주제였습니다! (제가 진행)
- 2004년 이전에는 기상 지연 관련 데이터가 없었기 때문에 2004년부터 2008년 데이터에 한정해서 WeatherDelay, ArrDelay, DepDelay 값을 숫자로 변환 후 결측치까지 제거하여 분석을 진행했습니다.
- 그리고 지연 값이 0보다 큰 항공편만을 대상으로 필터링했습니다.
- 결과적으로 기상 지연이 증가하면 출발 및 도착 지연도 증가하는 경향(상관계수는 약 0.70~0.71)을 확인했습니다.
- 그렇지만 상관계수가 엄청 강하진 않기 때문에 날씨 이외에도 항공사 운영, 공항 혼잡도 등의 다른 요인이 작용할 수 있다는 것을 추정해보았습니다.
💡 한 공항의 지연이 다른 항공편에 미치는 영향
- 전체적으로 살펴보기에는 데이터가 방대했기 때문에 저는 특정 공항(ATL)을 골라 해당 공항에서 발생한 지연이 다른 항공편으로 전파되는 현상을 분석하기 시작했습니다.
- 출발, 도착 지연 데이터를 날짜별, 항공기별로 집계하고, 7일 이동평균을 활용해서 단기 변동성을 완화하고 추세를 파악해보았습니다.
- 또 공항만을 보기에는 주제와의 연계성이 떨어질 수도 있었기 때문에 특정 항공기들을 골라(실제 운행 횟수가 많은 순) 연속 운항 결과를 시각화하여 관련성을 살펴보게 되었습니다.
- 동일 공항 내에서는 도착 지연이 커질 경우, 출발 지연도 함께 증가하는 양상을 확인할 수가 있었고,
- 동일 항공기(TailNum)의 연속 운항 간에도 지연 전파 현상이 뚜렷하게 나타나는 것을 확인할 수 있었습니다.
💡 9/11 테러 전후의 비행 패턴 변화
- 이 주제에 대해서는 9/11 테러 전후의 항공편 우회(Diverted) 및 취소(Cancelled) 건수를 비교해보는 식으로 진행하였고,
- 이에 따라 각 연도별로 우회 및 취소 건수를 집계하여 시각화를 해보았습니다.
- 결과적으로 테러 이후 우회 횟수는 급감하는 반면, 비행 취소 건수는 단기간 내에 급증하는 현상이 나타나는 것을 확인했습니다.
💡 두 도시 간의 운항 노선 비교
- 가장 빈번하게 운행된 도시들(SFO ↔ LAX) 노선의 연도별 운항 횟수가 어떻게 변하는지를 체크하였습니다.
- 출발 공항 변수(Origin)와 도착 공항(Dest)별로 그룹화해서 운항 건수를 총 집계했고, 연도별로 분포를 시각화했습니다.
- 당연하게도 SFO ↔ LAX 노선이 전체 운항 중 가장 빈번하긴 했지만, 1990년대 초 이후 점차 감소하는 추세를 보였습니다. (데이터의 문제...? 혹은 전처리 과정에서의 문제 가능성)
- 조금 의아한 결과이긴 했지만, 9/11 테러 및 경제 위기의 영향이 반영된 결과라고 파악한 뒤 다음 주제로 넘어가보았습니다.
💡 주요 공항 간 네트워크 분석 (ORD, ATL, DFW 등)
- 주요 공항은 전 주제에서 가장 빈번하게 운행된 공항이 나왔기 때문에! 이어서 해당 정보들을 가지고 시카고 공항(ORD), 애틀랜타 공항(ATL), 댈러스 공항(DFW) 등의 주요 공항 데이터를 가져올 수 있었습니다.
- 해당 공항들 간의 항공편 데이터를 추출하고, 출발지와 도착지가 동일한 경우에는 데이터를 제외시켰습니다. (우회 가능성)
- 그리고 추후 그룹별로 집계한 뒤, 히트맵을 통해서 건수를 시각화하게 되었습니다.
- ORD, ATL, DFW 간의 항공편은 운행이 매우 활발했고, 특히 ORD ↔ DFW와 ATL ↔ DFW 노선에서 높은 연결 강도를 확인할 수 있었습니다.
💡 월별 및 연도별 운항 건수 분석
- 마지막으로 저희 팀은 어느 달에 항공편 이용 수가 가장 많은지, 그리고 연도별로 총 운항 건수는 어떻게 변화하는지에 초점을 두어 분석을 진행했습니다.
- 아주 간단하게만 살펴봤기에 월별(Month) 데이터를 각 연도별로 집계하고 관련 통계값을 산출해내었습니다.
- 그래서 월별로는 3월의 이용자 수가 약 10,448,039건으로 가장 많았고, 2월이 가장 적었습니다.
- 연도별로 살펴봤을 때는, 2007년에 전체 운항 건수가 최고치를 기록한 것을 확인할 수 있었습니다.
✨ 그래서 결론이 뭐지?
- 최적의 출발 요일 및 시간대를 선택해서 항공편 지연을 줄이는 데 도움을 줄 수도 있을 것 같고,
- 9/11 테러와 같은 중요한 사건이 항공 운항 패턴이나 운영 정책에 미친 영향을 명확히 확인할 수도 있었습니다.
- 그래서 추가적으로 2번 주제와 관련하여 항공기 제작 연도와 지연 빈도 간의 미묘한 관계(?)에 대해 추가적인 분석을 진행할 수도 있고,
- 공항 내에서의 연쇄적인 지연 현상에 대해 다양한 변수들과 연관성을 추가 분석해볼 수도 있을 듯 합니다.
🤔 24일차 회고
- 오늘의 프로젝트는 데이터의 양도 어마무시하고, 주제들도 꽤나 많아서 분석하는 데 집중도를 엄청 쏟아낸 것 같습니다.
- 그만큼 시간이 정말 순식간에 지나가서 좋은 점도 있었으나,
- 기획과 전처리 부분에 있어 시간을 많이 투자했고, 그에 따라 분석이나 시각화는 상세하게 하지 못한 점에 대해서 꽤나 아쉬움이 많았습니다.
- 그래도 항공 데이터와 관련하여 많은 인사이트를 얻어냈고, 추후에 또다른 프로젝트에서도 이런 과정에 들이는 시간을 줄일 수 있을 것만 같습니다.
- 오늘로써 SQL 과정은 마무리되고 다음 주부터는 자연어 처리를 본격적으로 진행할 예정인데, 더 많은 것들을 시도해볼 수 있어서 기대가 되는 오늘입니다!! 화이팅!! 🔥🔥
728x90
LIST
'Projects > LG U+' 카테고리의 다른 글
[Data Analysis] 한국복지패널 데이터 (14) | 2025.03.09 |
---|---|
[Data Analysis] 야후 파이낸스 주식 데이터 (4) | 2025.03.05 |
[Data Analysis] 다나와 & 미세먼지 & 행복 지수 데이터 (2) | 2025.02.20 |
[Data Analysis] Starbucks & Mega Coffee 데이터 (4) | 2025.02.19 |
[Data Analysis] Netflix 데이터 (2) | 2025.02.14 |