본문 바로가기
● 인공지능, 분석/20.12 생활 프로그래밍

[4. CSV] CSV 파일 데이터 분석하기

by 0ver-grow 2021. 1. 11.
반응형

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)

 

 

skytreesea/do-it-python

Methods and classes in the book, "do it python" . Contribute to skytreesea/do-it-python development by creating an account on GitHub.

github.com

 

 

반응형