next() 함수: 첫 번째 데이터 행을 읽으면서 데이터의 탐색 위치를 다음 행으로 이동시키는 함수
import csv
f=open('weather.csv')
data=csv.reader(f)
header=next(data)
print(header)
f.close()
'''
출력 결과
['일시', '평균기온', '최대풍속', '평균풍속']
'''
CSV 파일에서 속성만 추출
next()함수를 통해 data 내부 내용이 다음 행으로 이동되어 헤더가 제거된 속성만 추출 가능
import csv
f=open('weataher.csv')
data=csv.reader(f)
header=next(data)
for row in data:
print(row)
f.close()
'''
출력 결과
['2010-08-01', '28.7', '8.3', '3.4']
['2010-08-02', '25.2', '8.7', '3.8']
['2010-08-03', '22.1', '6.3', '2.9']
['2010-08-04', '25.3', '6.6', '4.2']
['2010-08-05', '27.2', '9.1', '5.6']
(이하 생략)
'''
CSV 파일에서 원하는 데이터만 추출
평균 풍속 데이터 추출
import csv
f=open('weather.csv')
data=csv.reader(f)
header=next(data)
for row in data:
print(row[3], end=',')
f.close
실습) 지난 10년간 울릉도의 최대 풍속은?
import csv
f=open('weather.csv')
data=csv.reader(f)
header=next(data)
max_wind=[]
for row in data:
if row[2] =='':
max_wind.append(0)
else:
max_wind.append(float(row[2]))
f.close()
print('지난 10년간 울릉도의 최대 풍속은: ',max(max_wind), 'm/s')
'''
출력 결과
지난 10년간 울릉도의 최대 풍속은: 26.0 m/s
'''
CSV 파일 저장
CSV 모듈을 불러옴
평균 풍속 데이터만 추출한 값을 aws 리스트에 저장
open()함수로 저장할 파일 명을 입력하고, w(write)로 표시
for문을 이용하여 aws에 저장된 리스트를 쓰고, f.close()로 파일 닫기
import csv
aws=[]
f=open('weather.csv')
data=csv.reader(f)
for row in data:
aws.append(row[3])
f.close
f=open("weather_aws.csv","w")
for i in range(len(aws)):
f.write(aws[i]+'\n')
f.close()
CSV 실습
앞서 사용했던 울릉도의 기상 데이터에는 일일 평균 풍속 데이터가 있다. 이 데이터를 바탕으로 몇월의 울릉도가 가장 바람이 강한지 알아 보고 싶다. 결과는 아래와 같다. 달이 0부터 시작하여 11(실제는 1월부터 12월)까지 있고, 3일 때에 가장 큰 풍속을 보이므로, 울릉도는 4월에 가장 강한 바람이 분다는 것을 알 수 있다.
import csv
import matplotlib.pyplot as plt
f= open('weather.csv') #CSV 파일을 열어 f에 저장
data= csv.reader(f) #reader() 함수로 읽기
header= next(data) #헤더 제거
monthly_wind= [0 for x in range(12)] #매달 풍속을 담을 리스트, 초기화 0
dayts_counted=[0 for x in range(12)] #각 달마다 측정된 일수, 초기화 0
for row in data:
month= int(row[0][5:7]) #0번 열에서 달 정보 추출
if row[3]!= '': #풍속 데이터 존재하는지 확인
wind= float(row[3]) #풍속 데이터를 얻어 옴
monthly_wind[month- 1]+= wind #해당 달에 풍속 데이터를 추가
days_counted[month- 1]+= 1 #해당 달의 일수를 증가
for i in range(12):
monthly_wind[i]/= days_counted[i] #일수로 나눠 월평균 구하기
plt.plot(monthly_wind, 'blue') #matplotlib을 통해 시각화
plt.show()
f.close() #파일을 닫음
'''
출력 결과
(출력 결과는 위의 사진과 같습니다.)
'''