안녕하세요, 온라인 코딩 스쿨 코드잇입니다.
이전 게시물에서 구글 Colab을 이용해서, 설치 없이 데이터 사이언스를 할 수 있는 환경을 만들었는데요.
이번엔 코랩을 통해 데이터 분석을 해보도록 할게요.
'가장 사람이 많이 내리는 지하철 호선은 몇 호선일까요?'
코드잇 직원들끼리 출퇴근 이야기 하다가 문득 궁금해졌습니다. 9호선? 2호선?
데이터를 보면 확실하겠죠 ?
▶데이터 불러오기
서울시 지하철 승하차 데이터를 불러옵시다. (아래 링크는 서울열린데이터광장에서 제공하는 데이터를 직접 1차 클리닝한 파일입니다.)
import pandas as pd df = pd.read_csv('https://www.dropbox.com/s/f9qdgwbozhk7yh8/subway.csv?dl=1') df.head()
▶데이터 클리닝
불러온 데이터에 어떤 지하철 호선이 있는지 unique() 메소드로 살펴 봅시다.
df['line'].unique()
많은 데이터가 있네요. 우선 1호선에서 9호선까지의 정보만 살펴 봅시다.
'호선'으로 끝나는 데이터 중에서, '공항철도 1호선'만 제외하면 되겠네요.
filter = df['line'].str.endswith('호선') & ~df['line'].str.contains('공항철도') df = df[filter] df['line'].unique()
이제 1호선에서 9호선까지의 데이터만 남았습니다.
▶새로운 데이터 만들기
df['ratio'] = df['out'] / df['in'] df.head()
ratio라는 새로운 Column이 추가되었네요.
이 ratio 값이 높으면, 승차 인원에 비해 하차 인원이 많은 겁니다.
▶시각 분석
seaborn의 힘을 빌려, 이걸 그래프로 분석해 봅시다.
import seaborn as sns sns.catplot(x='line', y='ratio', kind='swarm', data=df)
한글이 깨지는 군요. 한글 폰트가 없기 때문인데요.
한글 폰트를 구글 Colab 설치해 봅시다.
import networkx as nx import matplotlib.pyplot as plt import matplotlib.font_manager as fm !apt-get install fonts-nanum* !apt-get install fonts-woowa-hanna NANUM_GOTHIC = fm.FontProperties(fname='/usr/share/fonts/truetype/nanum/NanumGothic.ttf') fm._rebuild() plt.rc('font', family=NANUM_GOTHIC.get_name())
이렇게 쥬피터 노트북에서 바로 실행해 주면 됩니다.
여러 폰트를 설치하고, 그 중에 나눔 고딕 폰트를 그래프에서 쓰겠다는 코드입니다.
(설치하는데 시간이 조금 걸립니다. 실행하고 기다려 주세요.)
폰트 설치가 완료되면, 다시 그래프를 그려 봅시다.
sns.catplot(x='line', y='ratio', kind='swarm', data=df)
다시 실행해 보니, 한글이 잘 나오는 군요.
그래프를 살펴보면 전반적으로 1.0 부근에 모여있긴 한데, 2호선은 조금 윗쪽으로, 7호선은 조금 아랫쪽으로 분포하는 걸 볼 수 있네요.
▶통계 분석
이 결과를 통계로도 확인해 봅시다.
보통 데이터 분석을 할 때, 시각적인 분석이 더 좋을 경우도 있고, 통계적인 분석이 더 좋을 경우도 있습니다.
그래서 두 방법을 같이 병행해야, 더 안정적이고 좋은 결론을 얻을 수 있습니다.
각 호선을 그룹으로 묶은 뒤, 평균을 한번 살펴 봅시다.
df.groupby('line').mean()
2호선과 4호선이 가장 높은 수치를 보이고 있네요.
3호선과 7호선이 가장 낮고요.
그러니까 사람들이 3호선/7호선을 타고, 2호선/4호선에서 내리는 경향이 있다는 겁니다.
물론 대부분의 사람들은 어딘가를 갔다가 돌아올 때, 같은 경로로 되돌아오는 경우가 많지만요.
각 호선별 승하차 비율을 분석해 보았는데요.
비율이 아니라, 라인별 총 이용 인원을 분석할 수도 있습니다.
혹은, 각 지하철 역마다 분석을 해볼 수도 있겠죠?
그래프를 보면, 특히 높거나 특히 낮은 몇 개의 점들이 보입니다. 이걸 이상점(Outlier)이라고 부르는데요.
이 이상점들은 어떤 지하철 역일까요?
그건 여러분의 몫으로 남겨 두겠습니다!
데이터 사이언스는 데이터를 모으는 과정에서부터, 정리하는 클리닝 과정, 시각화 및 통계 분석 등 다양한 역량이 고르게 필요한 분야입니다.
코드잇에서 데이터 크롤링, 데이터 클리닝, 시각화와 분석까지, 직접 시작해 보세요!