반응형
Numpy, Pandas로 쉽게 데이터 분석이 가능하다.
하지만 CSV형 리스트 활용법을 배우는 이유는
1. 반복문과 조건문 연습에 도움
2. 파이썬의 리스트 기능(인덱스, 슬라이싱, 원소 꺼내기_pop 등) 사용 가능
3. 논리적 사고를 하는데 도움
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
print(newPop[:4])
'''
[['Gu', 'Korean', 'Foreigner', 'Senior'], ['Total', 9740398.0, 285529.0, 1468146.0], ['Jongrogu', 151767.0, 11093.0, 27394.0], ['Jongru', 126409.0, 10254.0, 23025.0]]
'''
위 데이터('popseoul.csv')에서 등록외국인 비율을 계산해보자.
우선 newPop[1] 요소를 살펴보자
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
i = newPop[1]
print(i)
'''
['Total', 9740398.0, 285529.0, 1468146.0]
'''
for j in i :
print(j)
'''
Total
9740398.0
285529.0
1468146.0
'''
전체인구 대비 외국인비율
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
i = newPop[1]
print(i[2] / (i[1] + i[2]) * 100)
'''
전체인구대비 외국인비율 : 2.847906233508383
'''
foreign = round((i[2] / (i[1] + i[2]) * 100),1) # 소수첫째자리까지 반올림하기
print(foreign)
'''
2.8
'''
newPop의 각 행의 등록외국인 비율 출력
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
for i in newPop :
foreign = 0 # 한번 반복하고 나면 foreign을 다시 지정해야 하므로 내부에 지정
try :
foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
print(i[0],foreign)
except :
pass
'''
Total 2.8
Jongrogu 6.8
Jongru 7.5
Yongsangu 6.6
Seongdonggu 2.6
.
.
.
'''
첫 행 지정하기
마치 엑셀의 첫 행(카테고리있는 행)을 고정하는 것처럼 해보자
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
i = newPop[1]
foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
new = [['구','한국인','외국인','외국인 %']]
new.append([i[0],i[1],i[2],foreign])
print(new)
'''
[['구', '한국인', '외국인', '외국인 %'], ['Total', 9740398.0, 285529.0, 2.8]]
'''
외국인 비율 3% 이상인 경우 출력하기
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
for i in newPop :
foreign = 0 # 한번 반복하고 나면 foreign을 다시 지정해야 하므로 내부에 지정
try :
foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
if foreign > 3 :
print(i[0],i[1], i[2], foreign) # 여기선 [] 안해줬음
except :
pass
'''
Jongrogu 151767.0 11093.0 6.8
Jongru 126409.0 10254.0 7.5
Yongsangu 228830.0 16159.0 6.6
.
.
.
'''
외국인 비율 3% 이상인 경우, new 리스트에 append하기
import os, re, usecsv
total = usecsv.opencsv('popseoul.csv')
newPop = usecsv.switch(total)
new = [['구','한국인','외국인','외국인 %']]
for i in newPop :
foreign = 0 # 한번 반복하고 나면 foreign을 다시 지정해야 하므로 내부에 지정
try :
foreign = round(i[2] / (i[1] + i[2]) * 100, 1)
if foreign > 3 :
new.append([i[0],i[1], i[2], foreign]) # []해줄 것
except :
pass
print(new)
usecsv.writecsv('newPop.csv', new)
반응형
'● 인공지능, 분석 > 20.12 생활 프로그래밍' 카테고리의 다른 글
[4. CSV] 번역 내용 저장하기 (0) | 2021.01.12 |
---|---|
[4. CSV] 부동산 실거래가 분석하기. 조건 필터링 / 별도로 저장하기 (0) | 2021.01.11 |
[4. CSV] try except문 활용하기 (0) | 2021.01.11 |
[4. CSV] 수정한 요소 새로 적재하기 vs 수정한 요소 덮어쓰기 (0) | 2021.01.11 |
[4. CSV] CSV 수정하기, 쉼표제거 (0) | 2021.01.09 |