-
[Python/Matplotlib] 지하철 시간대별 승하차 총 인원수 추이를 꺾은 선 그래프로 시각화하기Study/Python 2022. 2. 1. 17:17
지하철 시간대별 승하차 총 인원수 추이 꺾은 선 그래프 그리기
import csv import matplotlib.pyplot as plt f = open('subwaytime.csv') data = csv.reader(f) next(data) next(data) s_in = [0] * 24 s_out = [0] * 24 for row in data: row[4:] = map(int, row[4:]) for i in range(24): s_in[i] += row[4+i*2] s_out[i] += row[5+i*2] plt.rc('font', family='Malgun Gothic') plt.figure(dpi = 300) plt.title('지하철 시간대별 승하차 인원 추이') plt.plot(s_in, label = '승차') plt.plot(s_out, label = '하차') plt.legend() plt.xticks(range(24), range(4, 28)) plt.show()
전체 코드
1. 라이브러리 및 모듈 import
import csv import matplotlib.pyplot as plt
- csv 파일을 읽기 위해 csv 모듈을 import한다.
- 그래프를 그려 시각화 하기 위해 matplotlib 라이브러리의 pyplot 모듈을 import한다.
2. csv 공공데이터 읽어오기
f = open('subwaytime.csv') data = csv.reader(f) next(data) next(data) # 헤더 제외
- open()을 이용하여 subwaytime.csv 파일을 f에 저장한다. subwaytime.csv에는 시간대별 지하철 이용 현황 데이터가 저장되어 있다.
- csv.reader()를 이용하여 f에 저장된 공공 기온 데이터를 읽어와 data에 저장한다.
- next()를 이용하여 분석에 필요없는 헤더 데이터와 첫 줄을 제거해준다.
3. 데이터 시각화를 위한 변수 선언
s_in = [0] * 24 s_out = [0] * 24
- 시간대별 승차 수를 저장하기 위한 s_in 리스트 변수를 선언한다.
- 시간대별 하차 수를 저장하기 위한 s_out 리스트 변수를 선언한다.
4. 공공데이터로부터 원하는 데이터 추출 및 저장
for row in data: row[4:] = map(int, row[4:]) for i in range(24): s_in[i] += row[4+i*2] s_out[i] += row[5+i*2]
- for row in data를 이용하여 모든 데이터를 한 줄 씩 읽는다.
- 해당 줄의 네 번째 이후 데이터들()을 map 함수를 이용하여 데이터 타입을 string에서 int 타입으로 변환해준다.
- for문을 이용하여 24번 반복한다.
- row[4+i*2](시간대별 승차 데이터) 값을 s_in의 i번째(시간을 의미함) 리스트에 더해준다.
- row[5+i*2](시간대별 하차 데이터) 값을 s_out의 i번째(시간을 의미함) 리스트에 더해준다.
5. 그래프를 그리고 화면에 나타내기
plt.rc('font', family='Malgun Gothic') plt.figure(dpi = 300) plt.title('지하철 시간대별 승하차 인원 추이') plt.plot(s_in, label = '승차') plt.plot(s_out, label = '하차') plt.legend() plt.xticks(range(24), range(4, 28)) plt.show()
- plt.rc()를 이용하여 한글 폰트를 맑은 고딕으로 지정한다.
- plt.figure()를 이용하여 해상도를 지정해준다.
- plt.title()을 이용하여 그래프의 제목을 '지하철 시간대별 승하차 인원 추이'로 지정한다.
- plt.plot()을 이용하여 꺾은선 그래프를 그린다. s_in 리스트의 값을 이용하며 label은 '승차'로 지정한다.
- plt.plot()을 이용하여 꺾은선 그래프를 그린다. s_out 리스트의 값을 이용하며 label은 '하차'로 지정한다.
- plt.legend()를 이용하여 레이블을 그래프에 나타내준다.
- plt.xticks()를 이용하여 x축에 길이 24에 4부터 28(시간을 의미함)까지의 숫자를 이름표로 붙여준다.
- plt.show()를 이용하여 꺾은선 그래프를 화면에 나타낸다.
출력된 그래프
'Study > Python' 카테고리의 다른 글
[Python/Matplotlib] 특정 지역과 비슷한 연령별 인구 구조를 가진 지역 추출 및 꺾은선 그래프로 시각화하기 (0) 2022.02.03 [Python/Matplotlib] 지하철 유무임 승하차 비율을 파이 차트로 시각화하기 (0) 2022.02.02 [Python/Matplotlib] 지하철 시간대별 최대 승차 역 이름 및 승차 인원 막대그래프 시각화하기 (0) 2022.01.28 [Python/Matplotlib] 지하철 시간대별 이용 현황 데이터를 이용하여 아침 7시의 승차 데이터 막대그래프 그리기 (0) 2022.01.27 [Python/Matplotlib] 특정 지역의 남녀 연령별 인구 비교 막대그래프 그리기 (0) 2022.01.24