[코드잇] 구글 코랩으로 데이터 클리닝, 시각화, 분석 - 가장 인기 있는 지하철 호선은?

코드잇 / 조회수 : 2734

안녕하세요, 온라인 코딩 스쿨 코드잇입니다.

이전 게시물에서 구글 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)이라고 부르는데요.

이 이상점들은 어떤 지하철 역일까요?

그건 여러분의 몫으로 남겨 두겠습니다!

데이터 사이언스는 데이터를 모으는 과정에서부터, 정리하는 클리닝 과정, 시각화 및 통계 분석 등 다양한 역량이 고르게 필요한 분야입니다.

코드잇에서 데이터 크롤링, 데이터 클리닝, 시각화와 분석까지, 직접 시작해 보세요!

기업문화 엿볼 때, 더팀스

로그인

/