반응형
금일 포스팅은 csv파일을 분석하여 가공하는 예제를 풀이하였다.
우선 공공데이터 포털에서 아래의 파일을 다운 받아서 준비하였다.
https://www.data.go.kr/data/15021888/fileData.do
요구조건
- "재비산먼지평균농도"를 기준으로 하여 총합과 평균을 구하라
- 중복데이터를 제거하여 출력할 것
- 출력예시
화성시, 오산시 의 의 재비산먼지 평균농도들의
총합: 어쩌구
평균: 어쩌구.일
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 |