상세 컨텐츠

본문 제목

대중교통 데이터 시각화 하기 1

데이터분석/실습

by 2^7 2022. 4. 26. 14:31

본문

수도권의 대중교통 데이터는 티머니 홈페이지(https://pay.tmoney.co.kr/index.dev)에서 제공한다. 최근 월간 교통카드 통계자료를 다운받아 실습한다.

 

1. 유임 승차 비율이 가장 높은 역은 어디일까?

  • 데이터를 읽어온다
  • 모든 역의 데이터를 바탕으로 각 역의 비율을 계산
  • 비울이 가장 높은 역을 찾고 비율이 얼마인지 출력한다.

지하철 유무임별 이용현황

import csv
f = open('subwayfee.csv')
data = csv.reader(f)
next(data)
mx = 0
rate = 0
for row in data :
    for i in range(4,8) :
        row[i] = int(row[i])
    if row[6] != 0 :                          #무임승차 인원 값이 0이 아닌 경우
        rate = row[4] / row[6]
        if rate > mx :
            mx = rate
            print(row, round(rate,2))        #소술점 둘째자리 까지 반올림

일부 역이 무임 승차 인원이 0인 값이 있어 그 값을 제외한 결과만 출력하였다.

그런데 충무로역의 데이터 중 유임하차, 무임하차 값 모두 0이다.

충무로역처럼 환승이 가능한 역의 경우는 별도의 데이터 집계 방식을 적용해야 하지만 적용방법을 모르니 데이터를 어떻게 처리할 지 고민해 봐야 한다.

 

이번에는 비율을 무임승차 인원가 비교하는 것이 아닌 전체인원 중 유임 승차 인원을 구하는 방법으로 데이터를 처리해본다.

기존 : 유임승차 인원/무임승차 인원 -> 유임승차 인원/전체(유임+무임) 인원

import csv
f = open('subwayfee.csv')
data = csv.reader(f)
next(data)
mx = 0
rate = 0
for row in data :
    for i in range(4,8) :
        row[i] = int(row[i])
    if row[6] !=0 and (row[4] + row[6]) >100000 :
        rate = row[4] / (row[4] + row[6])
        if rate > mx :
            mx = rate
            print(row, round(rate,2))

결과를 보면 대학 근처역과 강남역 같이 유동인구가 많은 곳의 비율이 높다

하지만 작성한 코드는 rate값이 가장 큰 곳의 데이터를 출력해 나가는 과정을 보여 주는 코드로 최대 rate값이 발견될 때 마다 해당 값을 갖는 데이터를 출력한 것이다.

따라서 코드 일부를 수정해 보아야한다.

import csv
f = open('subwayfee.csv')
data = csv.reader(f)
next(data)
mx = 0
rate = 0
for row in data :
    for i in range(4,8) :
        row[i] = int(row[i])
    if row[6] !=0 and (row[4] + row[6]) >100000 :
        rate = row[4] / (row[4] + row[6])
        if rate > 0.94 :                        #0.94보다 큰 값만 출력
            mx = rate
            print(row, round(rate,2))

앞선 결과와 다르게 다른 곳들도 나왔다 결과로 나온 역들 중 이름이 낯선 곳들이 있는데 같이 나온 역들 대부분 젊은사람의 많이 모으는 곳이라 낯선 곳들은 아마도 젋은 사람들이 잘 모이는 장소라고 예측할 수 있을것 같다.

그럼 가장 유임승차 비율이 높은 곳을 알아보기 위해 비율 값을 좀 더 키워보자

import csv
f = open('subwayfee.csv')
data = csv.reader(f)
next(data)
mx = 0
rate = 0
for row in data :
    for i in range(4,8) :
        row[i] = int(row[i])
    if row[6] !=0 and (row[4] + row[6]) >100000 :
        rate = row[4] / (row[4] + row[6])
        if rate > mx :
            mx = rate
            mx_station = row[3] + ' ' + row[1]

print(mx_station, round(mx * 100,2))   #비율 값에 100을 곱해서 출력

2022년 3월 기준 유임승차 비율이 가장 높은 곳은 '한양대 2호선' 이다.

 

참고 서적 : 모두의 데이터분석 with파이썬
728x90

관련글 더보기