본문 바로가기
Python

[아나콘다] 데이터 분석 및 가공_2

by amoomar 2022. 5. 11.
반응형

 

금일 포스팅은 csv파일을 분석하여 가공하는 예제를 풀이하였다.

 

 

우선 공공데이터 포털에서 아래의 파일을 다운 받아서 준비하였다.

 

https://www.data.go.kr/data/15021888/fileData.do

 

한국환경공단_도로 재비산먼지 측정 정보_20220428

한국환경공단_도로 재비산먼지 측정 정보는 특수제작한 이동측정차량으로 주행하는 차량의 타이어(휠)와 도로면의 마찰에 의해서 재비산되는 먼지(PM10)를 측정한 월간 평균 자료입니다. 월간

www.data.go.kr

 

 


 

 

 

요구조건

 

- "재비산먼지평균농도"를 기준으로 하여 총합과 평균을 구하라

- 중복데이터를 제거하여 출력할 것

- 출력예시

화성시, 오산시 의 의 재비산먼지 평균농도들의

 

총합: 어쩌구

 

평균: 어쩌구.일

 

import csv

cityList=[] #지역명
resSum=0 #총합
resAvg=0 #총평균
length=0 #data의 길이

with open('test.csv','r', encoding='CP949') as f:
    data=csv.reader(f)
    header=next(data)
    
    # 1. 총합, 길이, 지역명 추출
    for v in data:
        
        # 1) 지역명을 추출하는데, 혹시 지역명이 공란이라면 지역이 지역명을 대체할 수 있도록 한다.
        if v[3]=='':
            cityList.append(v[2])
        else:
            cityList.append(v[3])
            
        # 2) 총합을 구하기 전 형변환 후 진행
        v[9]=int(v[9])
        resSum+=v[9]
        
        # 3) data행 개수를 구하기 위해 v가 불러와 질때마다 length변수가 누적되도록 함
        length+=1

# 2. Set활용하여, 지역명 중복 제거
citySet=set(cityList)
# 1) city = citySet의 각 요소들 사이에 ','를 붙여 구분한 문자열
# join이란? https://dev.plusblog.co.kr/36
city=', '.join(citySet)

# 3. 평균=총합/data의 행길이
resAvg=resSum/length

print(city,'의 재비산먼지 평균농도들의')
print()
print('총합:',resSum)
print()
print('평균: %.1f'%resAvg) #소수점 첫째자리까지

 

지역명을 배열에 담고, 해당 배열에 중복된 지역명을 삭제하기 위해 set에 배열을 담아 중복을 제거하였다. join을 활용하여 set을 문자열로 치환하였다. join에 대한 더 자세한 설명은 주석을 통해 링크를 첨부하였다.

 

이외의 풀이 내용은 주석에 상세하므로 생략하겠다.

 

출력 결과는 아래와 같다.

출력 결과

 

 

 

 

반응형

'Python' 카테고리의 다른 글

[아나콘다] 데이터 시각화  (0) 2022.05.13
[아나콘다] 데이터 분석 및 가공_3  (0) 2022.05.13
[아나콘다] 데이터 분석 및 가공  (0) 2022.05.10
[IDLE] 데이터 분석 및 가공  (0) 2022.05.10
[IDLE] 객체와 상속  (0) 2022.05.06