Python_Library_Test1

Back/Python 2022. 12. 13.

오늘은 파이썬 라이브러리 시험을 봤다. 다 풀고 나서 시간이 좀 남아서 어떻게 풀었는지 기억이 좀 쌩쌩할 때 풀이 과정을 적어두려고 함!
기본 내용보다 이걸 먼저 작성하다니...

변명시간 : 노션에는 정리를 제 때 해놓고 있는데 티스토리는 게시글의 형태다 보니 손이 잘 가지 않는 듯 합니다... 꾸준히 올려볼게요 ^_^;;;

 

1번 문제 : 

① 은 시각화 라이브러리,  ②는 plot이라 작성해 제출했다.

근데 지금 생각해보니 시각화 라이브러리는 그래프(선 막대 등등)을 아우르는 말이라 정답이 아닌 것 같음...
line plot인가??? 몰?루겟음 ㅠ_ㅠ?? 아시는 분은 댓글로 알려주시면 감사하겠습니다;;; ②는 맞는 듯 ㅎㅎ 아닐 시 유감

 

2번 문제 : 다음은 어떤 차트에 대한 출력결과이다. 문제를 읽고 알맞은 답을 작성하시오.

(1) 이 차트의 명칭을 작성하시오.
Barchat (라고 자신있게 썼는데 잘 모르겠다... 이론은 늘 어려운 듯 ㅠㅅㅠ)

(2) 이 차트를 matplotlib.pyplot 라이브러리를 사용하여 그리기 위해서 어떤 함수를 사용하는지 작성하시오.
bar 함수 

그냥 직접 만들어보면 답이 나오니까 쉬웠다
아래 코드블럭으로 설명하겠슴

 

import matplotlib.pyplot as plt

우선 시각화 라이르러리 모듈 (Matplotlib)을 불러와야 죽이 되든 밥이 되든 시작할 수 있다

x = [0,1,2]
y = [100, 400, 900]
plt.bar(x, y)
plt.show

보면 안다

 

3번 문제 : <실행결과> 같은 결과를 출력하는 코드를 완성하시오.
(단, 두 차트는 빨간색과 파란색을 통해 구분지어야 한다.)

X = [2, 3, 4, 5, 6, 7, 8]
Y1 = [5, 7, 3, 9, 1, 8, 6]
Y2 = [9, 5, 7, 2, 3, 7, 1]

정답은 마크다운으로 아래에~
제일 시간을 많이 쓴 문제인데(진짜 왜?) X를 위에 꺼랑 구분하겠다고 대문자로 써놓고선 계속 소문자로 쓰고 있었음... 황당

.grid()로 그래프에 그리드를 부여,
각각의 선 / Y1에는 label= 'Y1', c='r'
Y2에는 label = 'Y2', c ='b'
(라벨을 주는 이유는 legend를 위해서)
xlabel은 'x', ylabel에는 'y'
plt.legend(loc= 'best')
를 주면 된다.

 

plt.plot(X, Y1, label = 'Y1', c ='r')
plt.plot(X, Y2, label = 'Y2', c ='b')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.legend(loc= 'best')
plt.show()

 

4번 문제 : ‘Traffic_Accident_2017.csv’ 데이터를 이용하여 주간과 야간에 발생한 사건에 대해 아래 주어진 조건을 지켜 다음과 같이 시각화 하시오.

Traffic_Accident_2017.csv
0.76MB

import pandas as pd

일단 Pandas 객체 (자료구조)를 호출해야 한다.

data = pd.read_csv('data/Traffic_Accident_2017.csv', encoding = 'euc-kr')

data 는 pd에서 불러온 csv파일, 'data/Traffic_Accident_2017.csv'라는 이름의 파일이다. 인코딩은 한국어로!

# 데이터 컬럼 확인
data.columns

우선 data의 컬럼을 확인했다. 내게 지금 필요한 컬럼은

1. '사고유형_대분류' 컬럼의 '차대 사람'
2. '주야' 컬럼의 '야간'

NTA = data['주야']=='야간'# Night Traffic Accident

Boolean 타입의 데이터로 '주야' 컬럼에서 야간인 녀석들을 찾아낼 것이다

CVH = data['사고유형_대분류']=='차대사람'

'사고유형_대분류'에서도 '차대사람'을 골라낼 것이다

 

Q3 = data[NTA&CVH]['요일'].value_counts()

드디어 NTA와 CVH에 왜 넣어줬는지 설명할 수 있습니다. 저는 코드가 길어지면 나중에 알아보기 어려워합니다. 좋은 습관인지 아닌지는 모르겠음;;
아무튼 NTA와 CVH 모두 True 인 data를 '요일'로 카운트 합니다. 여기서 groupby를 썼다가 왜 않 되 는 거 묘... 하고 있었음

Q3 = Q3[['월','화','수','목','금','토', '일']]

순서대로 정리해줍시다.

조건 1. 사고유형_대분류가 ‘차대사람’ 이면서 발생시간대가 ‘야간’인 경우의 사고 건수 카운트
조건 2. y축의 범위는 0~200으로 설정할 것
조건 3. 차트 내부 글씨는 한글로 표시할 것

그럼 이런 결과가 나오는데요
이 데이터는 한글로 되어있으니까 폰트를 가져와줘야함

# 한글을 표현하기
from matplotlib import font_manager, rc
# 시스템에 설치된 font 리스트 확인
font_list = font_manager.findSystemFonts()
font_name = font_manager.FontProperties(fname= 'C:/Windows/Fonts/malgun.ttf').get_name()
rc('font', family = font_name)

나눔고딕을 가져와줬습니다.

x = Q3.index
plt.bar(x,Q3)
# 조건 2
plt.ylim(0,200)

plt.title('요일별 야간 차대사람 교통사고 건수')
plt.xlabel('요일')
plt.ylabel('사고 건수')

순서대로 풀어보자면

x = Q3의 index이고,
x,Q3의 그래프를 막대그래프로 그리겠다.
y축의 범위는 0부터 200
그래프의 타이틀은 '요일별 야간 차대사람 교통사고 건수'
x축의 라벨은 '요일'
y축의 라벨은 '사고건수'

라는 뜻입니다 ㅇ_ㅇ!!!! 실행시켜보면

스크린샷이라서 화질 ㅈㄴ 깨진 게 아닌 말꼼한 상태의 그래프가 나타납니다.

시험문제 풀이는 여기서 끝!


제출하고도 시험시간이 아직도 남아있네요...
사실 문제 더 남아있는거 아님? ㅋㅋ

신기하네요

'Back > Python' 카테고리의 다른 글

Python Web Crowling  (1) 2022.12.21