본문 바로가기
Data Analysis

[데이터분석](Project1)코로나 확진자 데이터 분석하기 2

by 은구잇 2021. 9. 22.
728x90

[Project1] 공공데이터를 활용하여 코로나 확진자 데이터 분석하기

  • [실습4] 3.2. 월별 확진자 수 출력
  • [실습5] 3.3. 8월 일별 확진자 수 출력
  • [실습6] quiz_1 퀴즈 풀이
  • [실습7] 3.4. 지역별 확진자 수 출력

 


3.2. 월별 확진자 수 출력

나누어진 month의 데이터를 바탕으로 달별 확진자 수를 막대그래프로 출력해 보겠습니다.

 

# 그래프에서 x축의 순서를 정리하기 위하여 order list를 생성합니다.
order = []
for i in range(1,11):    # 1부터 10까지
    order.append(str(i))   # append함수를 사용하여 i 를 추가해줌

order  #order 출력

 

<결과>  1부터 10까지의 order List

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

 

<어려운 부분>

# 그래프의 사이즈를 조절합니다.
plt.figure(figsize=(10,5))    # 그래프를 그리겠다는 선언, 가로 10 세로 5

# seaborn의 countplot 함수를 사용하여 출력합니다.   그래프 채우기
sns.set(style="darkgrid")   #seaborn의 스타일을 설정
ax = sns.countplot(x="month", data=corona_del_col, palette="Set2", order = order) 

 # countplot -> 데이터의 개수를 셈, 원본 데이터에서 개수를 센다.

 # x 축 설정, palette 색깔 설정, order 순서는 1부터 10까지의 순서를 order로 설정

 

서울시 확진자 추이 그래프(seaborn / countplot)

 

- pandas의 plot 모듈을 사용해서 시각화 해보기

 

# series의 plot 함수를 사용한 출력 방법도 있습니다.
corona_del_col['month'].value_counts().plot(kind='bar')   # value_count로 값의 개수를 확인해서 내림차순으로 정렬

                                                                         #plot으로 그리기, 종류 설정

pandas/ plot 모듈로 확진자 추이 확인

3.3. 8월달 일별 확진자 수 출력

월별 확진자 수를 출력해보면 알 수 있듯이 8월에 확진자 수가 가장 많았습니다.

이번엔 8월 동안 확진자 수가 어떻게 늘었는지 일별 확진자 수를 막대그래프로 출력해 봅시다.

 

# 그래프에서 x축의 순서를 정리하기 위하여 order list를 생성합니다.
order2 = []
for i in range(1,32):
    
    order2.append(str(i))

order2

 

# seaborn의 countplot 함수를 사용하여 출력합니다.
plt.figure(figsize=(20,10))
sns.set(style="darkgrid")
ax = sns.countplot(x="day", data=corona_del_col[corona_del_col['month'] == '8'], palette="rocket_r", order = order2)

 

8월 일별로 확진자 추이

Q. y축이 되는 데이터는 어떻게 가져오는거지?  ax 변수에 담은 data 부분을 다시 한번 봐볼것!

 

퀴즈 1. 8월 평균 일별 확진자 수를 구하세요. (8월 총 확진자/31일)

 

#corona_del_col[corona_del_col['month'] == '8']['day'].count()/31
#corona_del_col[corona_del_col['month'] == '8']['day'].value_counts().mean()

#위에는 정답, 아래는 내가 푼 정답

# 31로 나눠주는것이 mean 함수와 같은 역할을 함
corona_del_col[corona_del_col['month'] == '8']['month'].value_counts()/31   

 

output - > 77.935484

 

# 8월 평균 확진자 수를 구하여 quiz_1 변수에 저장합니다.
# float 형 상수값으로 저장합니다.

 


quiz_1 = corona_del_col[corona_del_col['month'] == '8']['month'].value_counts()/31
quiz_1   #77.935484

 

 

3.4. 지역별 확진자 수 출력

corona_del_col['지역']

 

import matplotlib.font_manager as fm    # 폰트 설정 모듈 사용

font_dirs = ['/usr/share/fonts/truetype/nanum', ]   # 디렉토리 지정
font_files = fm.findSystemFonts(fontpaths=font_dirs)

for font_file in font_files:
    fm.fontManager.addfont(font_file)     # 폰트 추가

 

#그래프 그리기

plt.figure(figsize=(20,10))
# 한글 출력을 위해서 폰트 옵션을 설정합니다.
sns.set(font="NanumBarunGothic",    # 폰트 설정
        rc={"axes.unicode_minus":False},   #축의 값이 마이너스인 경우 부호 깨짐을 방지하여 옵션 설정
        style='darkgrid')
ax = sns.countplot(x="지역", data=corona_del_col, palette="Set2")

 

서울 지역별 확진자 추이

 

지역 이상치 데이터 처리

* 종랑구 라는 오타, 한국이라는 지역구가 정해지지않은 동네가 있음!!

기존 지역 데이터 특성에 맞도록 종랑구 -> 중랑구, 한국 -> 기타로 데이터를 변경해 봅시다.

 

# replace 함수를 사용하여 해당 데이터를 변경합니다.
# 이상치가 처리된 데이터이기에 새로운 Dataframe으로 저장합니다.
corona_out_region = corona_del_col.replace({'종랑구':'중랑구', '한국':'기타'})

corona_out_region = corona_del_col.replace({'':'','':,'')}

 

 

# 이상치가 처리된 데이터를 다시 출력해 봅시다.
plt.figure(figsize=(20,10))
sns.set(font="NanumBarunGothic", 
        rc={"axes.unicode_minus":False},
        style='darkgrid')
ax = sns.countplot(x="지역", data=corona_out_region, palette="Set2")

 

output -> 이상치 데이터는 변경한 데이터로 출력이 되는것을 확인함!