subway.csv 파일을 읽고 시간대별 승차수의 변화를 각 노선별로 서로 다른 선 그래프로 출력
(단, x축 눈금은 5,6,7,8,...,24로 출력)
import pandas as pd
sub = pd.read_csv('subway.csv', encoding = 'cp949')
sub
Out[7]:
노선번호 시간 승차 하차
0 line_1 5 88136 35394
1 line_1 6 114628 195028
2 line_1 7 259282 483162
3 line_1 8 384892 1165703
4 line_1 9 315797 791704
.. ... .. ... ...
155 line_8 20 994385 1004555
156 line_8 21 992340 945111
157 line_8 22 903243 913484
158 line_8 23 54356 453525
159 line_8 24 12494 22345
[160 rows x 4 columns]
[ 문제풀이 ]
# 기초 데이터 생성 (wide data로 변환)
sub['시간'] = sub['시간'].astype('str').str.zfill(4).str[:2].astype('int')
sub.pivot_table('승차','시간','노선번호',aggfunc='sum')
sub.pivot_table('승차','시간','노선번호',aggfunc='sum')
Out[6]:
노선번호 line_1 line_2 line_3 line_4 line_5 line_6 line_7 line_8
시간
5 88136 608841 149909 244178 76867 244178 239566 244178
6 114628 1079186 344768 555232 243242 555232 234900 555232
7 259282 2960789 1008133 1478641 343245 1478641 1230585 1478641
8 384892 3914929 1301035 1666148 632422 1666148 1549555 1666148
9 315797 2419350 843939 1080607 259342 1080607 1103944 1080607
10 340972 1810982 688982 845377 756756 845377 983724 845377
11 411897 1847789 719544 853473 456456 853473 823479 853473
12 471989 1990964 788290 921995 246547 921995 994384 921995
13 558377 2256231 870152 1010356 234566 1010356 1099837 1010356
14 589343 2263081 874658 1021972 345677 1021972 1123884 1021972
15 648960 2445765 952321 1099173 378521 1099173 999348 1099173
16 721442 2694321 1050130 1208057 434244 1208057 1208057 1108057
17 791417 3306132 1212098 1405470 3221111 1405470 1405470 1399470
18 1044776 4810661 1656305 1705617 526335 1705617 1705617 1400317
19 810482 3565184 1227847 1282398 790482 1282398 1282398 1282398
20 608066 2732977 913682 1034818 348066 1034818 1143244 994385
21 647624 2716860 842636 1001286 460624 1001286 1444442 992340
22 576958 2584664 717158 925633 512958 925633 932454 903243
23 260729 1212806 288744 452658 240789 452658 45466 54356
24 21167 172373 33938 17687 21347 17687 22345 12494
# 시각화
# 1) 환경설정
plt.rc('font', family='Malgun Gothic', size=18)
plt.rc('axes', facecolor='#E4E4E4')
# 2) 시각화
total.plot()
plt.legend(title = '노선번호', ncol=2, fontsize = 12)
plt.xticks(total.index)
axis(1, at = 눈금, label = ...)
# 눈금과 라벨의 개수가 일치해야 한다.
plt.ylabel('승차수(천)', loc = 'top', rotation = 0)
plt.title('역별 승차 현황 비교', pad = 20)
plt.tight_layout()
'아이티윌_데이터 분석 55기 > 문제풀이_Python' 카테고리의 다른 글
| #11-2. 11일차 퀴즈에 대한 문제풀이 (0) | 2026.05.26 |
|---|---|
| #8-2. 8일차 퀴즈에 대한 문제풀이 (0) | 2026.05.20 |
| #7-2. 7일차 퀴즈에 대한 문제풀이 (0) | 2026.05.20 |
| #6-2. 6일차 퀴즈에 대한 문제풀이 (0) | 2026.05.18 |
| #4-2. 4일차 퀴즈에 대한 문제풀이 (0) | 2026.05.14 |