더북(TheBook)

현재 최고최고 기온 데이터는 숫자 값이 아닌 문자열이기 때문에, 값을 더하거나 크기를 비교할 수 없습니다. 숫자로 다루려면 숫자 타입(type) 데이터로 변환을 해주어야 합니다. 최고 기온 데이터는 ‘20.7’, ‘21.3’처럼 소수점이 있는 실수이므로 float() 함수를 사용하여 실수(float) 데이터로 변환해 봅시다.

import csv
f = open('seoul.csv')
data = csv.reader(f)
header = next(data)
for row in data :
    row[-1] = float(row[-1])   # 최고 기온을 실수로 변환
    print(row)
f.close()

최고 기온 데이터의 위치는 리스트 맨 뒤이므로 row[-1]로 접근할 수 있습니다. 또는 앞에서 5번째에 있으므로 row[4]로 접근해도 됩니다. 수정하고 다시 실행해 볼까요?

 

 

실행 결과

['1907-10-01', '108', '13.5', '7.9', 20.7]
['1907-10-02', '108', '16.2', '7.9', 22.0]
['1907-10-03', '108', '16.2', '13.1', 21.3]
['1907-10-04', '108', '16.5', '11.2', 22.0]
(생략)
['1950-08-31', '108', '25.4', '20.1', 32.5]
------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-14-e9fa1ccfd42f> in <module>()
 4 header = next(data)
 5 for row in data :
----> 6     row[-1] = float(row[-1])
 7 print(row)
 8 f.close()
 
ValueError: could not convert string to float: 
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.