더북(TheBook)

과정 3에는 8장에서 배운 matplotlib.pyplot 라이브러리와 한글 글꼴을 지정하는 등의 코드가 더 있지만, 여기서는 그래프를 그리는 핵심 코드만 표현했습니다. 그럼 과정 2까지 코드로 작성해 봅시다. 마지막에 결과 출력을 위한 코드도 한 줄 추가합니다.

s_mon = [0, 0, 0]
for row in data:
    if row[-1] == '전표매입':
        mon, payment = row[0].split('-')[1], int(row[-3])
        idx = mon - 10
        s_mon[idx] += payment
print(s_mon)
실행결과
----> 5 idx = mon - 10
TypeError: unsupported operand type(s) for -: 'str' and 'int'

데이터 타입이 맞지 않을 때 나오는 TypeError가 발생합니다. TypeError가 발생한 위치는 과정 2.1.2에서 인덱스를 구하는 부분입니다. 오류를 보면 “-(뺄셈) 연산에 지원되지 않는 연산자 타입: ‘문자열’과 ‘정수형’”이라고 나옵니다. 뺄셈 연산을 하는데 하나는 문자열이고 하나는 정수형이라서 연산할 수 없다는 뜻이죠. 뒤에 있는 10은 정수가 분명하니 mon이 문자겠네요. mon에 데이터를 저장한 바로 윗줄을 봅시다. CSV 파일에서 읽어 들인 data는 모두 문자열이라고 했습니다. 그런데 row[0].split('-')[1]을 보면 이용일시를 분리만 하고 이용월을 정수형으로 바꾸는 작업은 하지 않았습니다. 그래서 아랫줄의 뺄셈 연산에서 오류가 발생한 겁니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.