.csv
usecsv.py
하단에 다음의 내용을 추가# 숫자로 변환
def switch(listName):
for i in listName:
for j in i:
try:
i[i.index(j)] = float(re.sub(',','',j))
except:
pass
return listName
3.새 파일 s10_csv6.py
생성
import usecsv
total = usecsv.opencsv('popSeoul.csv', 'UTF-8')
newPop = usecsv.switch(total)
for i in newPop[:4]:
print(i)
print('-'*3)
i = newPop[1]
print(i)
print('-'*3)
print(i[2]/(i[1]+i[2])*100) # 전체 인구 대비 외국인 비율 계산
foreign = round(i[2]/(i[1]+i[2])*100,1) # 소수점 이하 둘째 자리에서 반올림
print(foreign)
print('-'*3)
# 각 구의 외국인 비율 구하기
for i in newPop:
foreign = 0
try:
foreign = round(i[2]/(i[1]+i[2])*100,1)
except:
pass
print(i[0],foreign)
# 첫 행 지정하기
new = [['구', '한국인', '외국인', '외국인 비율']]
print(new)
print('-'*3)
# 외국인 비율이 3%를 초과하는 구 정보만 csv 파일로 저장
for i in newPop:
foreign = 0
try:
foreign = round(i[2]/(i[1]+i[2])*100,1) # 외국인 비율을 소수점 이하 첫째 자리까지 구하기
if foreign>3:
new.append(i[:3]+[foreign])
except:
pass
print(new)
print('-'*3)
usecsv.writecsv('foreignrate.csv', 'UTF-8', new)
s11_csv7.py
생성import usecsv,re
apt = usecsv.switch(usecsv.opencsv('apt_202109.csv', 'UTF-8'))
print(apt[:3])
print('-'*3)
# 9월 한 달간 아파트 거래 건수
print(len(apt))
print('-'*3)
# 처음 5개 데이터의 시군구만 출력
for i in apt[:6]:
print(i[0])
print('-'*3)
# 처음 5개 데이터의 시군구, 단지명, 거래금액 출력
for i in apt[:6]:
print(i[0],i[4],i[-5])
print('-'*3)
# 강원도에서 전용면적 120 이상, 거래금액 3억 원 이하 검색
for i in apt:
try:
if re.match('강원',i[0]) and i[5]>=120 and i[-5]<=30000:
print(i[0],i[4],i[-5])
except:
pass
print('-'*3)
# 검색 결과를 csv 파일로 저장
new_list = []
for i in apt:
try:
if re.match('강원',i[0]) and i[5]>=120 and i[-5]<=30000:
new_list.append([i[0],i[4],i[-5]])
except:
pass
usecsv.writecsv('apt.csv', 'UTF-8', new_list)
s12_csv8.py
생성import usecsv,re
print(usecsv.opencsv('month_temp.csv', 'UTF-8'))
print('-'*3)
lines = usecsv.opencsv('month_temp.csv', 'UTF-8')
# 개별 데이터를 모두 출력
for line in lines:
for x in range(len(line)):
print(line[x])
print('-'*3)
# 특정 일자 기온 출력
for line in lines:
if '2019-10-20' in line:
print(line)
# 일교차 구하기
newLines = usecsv.switch(lines)
print(newLines)
print('-'*3)
for line in newLines[1:]: # 헤더를 제외한 나머지 정보 읽기
# 최고 기온 - 최저 기온
diff = line[4]-line[3]
# 일시, 최저 기온, 최고 기온, 일교차
print('%s %.1f %.1f %.1f' % (line[1],line[3],line[4],diff))
# 가공된 정보를 csv 파일에 저장
lineSaved = [['일자','최저 기온', '최고 기온', '일교차']]
for line in newLines[1:]:
diff = format(line[4]-line[3],'.1f')
lineSaved.append([line[1],line[3],line[4],diff])
usecsv.writecsv('month_temp2.csv', 'UTF-8', lineSaved)
print('csv 파일이 생성되었습니다')
s13_csv9.py
생성# 건강보험 심사평가원에서 제공하는 데이터
# 약국명, 지역, 주소, 개설일자, 경도, 위도
import usecsv
lines = usecsv.opencsv('pharm_2019.csv', 'UTF-8')
for line in lines[:5]: # 5개 표시
print(line)
print('-'*3)
# 특정 도시의 특정 약국 검색
for line in lines:
# 지역, 약국명
if line[1]=='경주시' and line[0]=='신대원약국':
# 약국명, 지역, 주소
print(line[0],line[1],line[2],sep='/')
print('-'*3)
# 최근 5년 이내(2019년 9월 1일 기준) 개설 약국 수
city = '원주시'
recent = 0
count = 0
for line in lines:
if line[1]==city:
count += 1 # 원주시의 총 약국 수
if int(line[3])>20140901:
recent += 1 # 원주시에서 최근 5년 이내에 개설된 약국 수
print('%s의 약국 수: %d개' % (city,count))
print('2019년 9월 1일 기준 5년 이내 개설된 약국 수 : %d개' % recent)
# 특정 지역 1년간(20100101~20101231) 개설된 약국 목록
# 번호/지역/약국명/경도/위도
print('번호','지역','약국명','경도','위도',sep='/')
number = 1
for line in lines[1:]:
if('경상북도' in line[2]) and (int(line[3])>=20100101) and (int(line[3])<=20101231):
print(number,'.',sep='',end='')
# 지역, 약국명, 경도, 위도
print(line[1],line[0],line[-2],line[-1],sep='/')
number += 1
print('-'*3)
# 추출된 약국 목록 정렬하기
# 경기도 용인시 수지구의 약국 목록을 약국명의 오름차순으로 정렬
data = []
# 번호,약국명,주소
print('번호',lines[0][0],lines[0][2],sep=',')
for line in lines[1:]:
if line[1]=='용인수지구':
# 약국명,주소
tmp = '%s/%s' % (line[0],line[2])
data.append(tmp)
#오름차순 정렬
data.sort()
number = 1
for x in data:
print('%d. %s' % (number,x))
number += 1