-
[Python/Matplotlib] 지하철 유무임 승하차 비율을 파이 차트로 시각화하기Study/Python 2022. 2. 2. 14:33
지하철 유/무임 승하차 비율을 파이 차트로 그리기
import csv import matplotlib.pyplot as plt f = open('subwayfee.csv') data = csv.reader(f) next(data) label = ['유임승차', '유임하차', '무임승차', '무임하차'] c = ['#14CCC0', '#389993', '#FF1C6A', '#CC14AF'] plt.rc('font', family = 'Malgun Gothic') for row in data: for i in range(4, 8): row[i] = int(row[i]) if(row[4] < row[6]): plt.figure(dpi=100) plt.title(row[1] + ' ' + row[3]) plt.pie(row[4:8], labels = label, colors = c, autopct = '%1.f%%') plt.axis('equal') plt.show()
전체 코드
1. 라이브러리 및 모듈 import
import csv import matplotlib.pyplot as plt
- csv 파일을 읽기 위해 csv 모듈을 import한다.
- 그래프를 그려 시각화 하기 위해 matplotlib 라이브러리의 pyplot 모듈을 import한다.
2. csv 공공데이터 읽어오기
f = open('subwayfee.csv') data = csv.reader(f) next(data)
- open()을 이용하여 subwayfee.csv 파일을 f에 저장한다. subwayfee.csv에는 지하철 승강장 별 유임승차/유임하차/무임승차/무임하차 건수 및 비용이 저장되어 있다.
- csv.reader()를 이용하여 f에 저장된 공공 기온 데이터를 읽어와 data에 저장한다.
- next()를 이용하여 분석에 필요없는 헤더 데이터를 제거해준다.
3. 데이터 시각화를 위한 변수 선언
label = ['유임승차', '유임하차', '무임승차', '무임하차'] c = ['#14CCC0', '#389993', '#FF1C6A', '#CC14AF'] plt.rc('font', family = 'Malgun Gothic')
- 유임/무임 별 승하차를 표시하기 위한 레이블을 리스트 형태로 선언한다.
- 유임/무임 별 승하차를 표현한 파이차트에 색상을 지정해주기 위해 해당하는 색상코드들을 리스트 형태로 선언한다.
- plt.rc()를 이용하여 한글 폰트를 맑은 고딕으로 설정한다.
4. 공공데이터로부터 원하는 데이터 추출 및 저장
for row in data: for i in range(4, 8): row[i] = int(row[i]) if(row[4] < row[6]):
- for row in data를 이용하여 모든 데이터를 한 줄 씩 읽는다.
- for문을 이용하여 해당 줄의 네 번째부터 여덟 번째 데이터들을(유임승차/유임하차/무임승차/무임하차 데이터가 저장된 부분) 읽는다.
- 해당 줄의 데이터를 문자열에서 int형으로 변환한다.
- 만약 4번째 줄이 6번째 줄보다 작다면 그래프를 작성한다.
5. 그래프를 그리고 화면에 나타내기
plt.figure(dpi=100) plt.title(row[1] + ' ' + row[3]) plt.pie(row[4:8], labels = label, colors = c, autopct = '%1.f%%') plt.axis('equal') plt.show()
- plt.figure()를 이용하여 해상도를 지정해준다.
- plt.title()을 이용하여 그래프의 제목을 '(호선) (역 이름)'으로 지정한다.
- plt.pie()를 이용하여 4번째부터 8번째 데이터를 이용하여 파이 차트를 그린다. 레이블은 label 리스트를 이용해 붙여주고, 색상은 c 리스트를 이용하여 지정해준다. 자동으로 퍼센테이지를 계산하여 붙여준다.
- plt.axis('equal')을 이용하여 파이 차트를 완전한 원형으로 그려준다.
- plt.show()를 이용하여 꺾은선 그래프를 화면에 나타낸다.
출력된 그래프
'Study > Python' 카테고리의 다른 글
[Python/Pandas] html에서 표를 읽어와 판다스를 이용하여 데이터프레임 작성하고 저장하기 (0) 2022.02.04 [Python/Matplotlib] 특정 지역과 비슷한 연령별 인구 구조를 가진 지역 추출 및 꺾은선 그래프로 시각화하기 (0) 2022.02.03 [Python/Matplotlib] 지하철 시간대별 승하차 총 인원수 추이를 꺾은 선 그래프로 시각화하기 (0) 2022.02.01 [Python/Matplotlib] 지하철 시간대별 최대 승차 역 이름 및 승차 인원 막대그래프 시각화하기 (0) 2022.01.28 [Python/Matplotlib] 지하철 시간대별 이용 현황 데이터를 이용하여 아침 7시의 승차 데이터 막대그래프 그리기 (0) 2022.01.27