본문 바로가기

코딩

[데이터분석/오늘코드] 코로나19 데이터 pandas로 크롤링하기 3

728x90

오늘코드 - 서울시 코로나19 사이트 Pandas 단 한 줄로 크롤링 하기

영상을 실습한 코드 입니다.

https://www.youtube.com/watch?v=irHfF1ZcuY0

 

covid19_todaycode-Copy1

모든 날짜를 행에 만들어주기

확진자가 없는 날의 데이터도 만들어주기

In [55]:
# 첫 확진일부터 마지막 확진일까지 가져온다
# 데이터 프레임의 첫번째 날짜는 first_day, 마지막 날짜는 last_day에 담는다

# timeit: 코드의 소요시간을 여러 번 측정해 좀 더 정확히 파악할 때 사용
first_day = df.iloc[-1, 7]
In [56]:
last_day = df.iloc[0, 7]
In [59]:
# pd.date_range를 통해 시작하는 날짜부터 끝나는 날짜까지의 DatetimeIndex를 만들고 
# days라는 변수에 저장
days = pd.date_range(first_day, last_day)
days[:5]
Out[59]:
DatetimeIndex(['2020-01-24', '2020-01-25', '2020-01-26', '2020-01-27',
               '2020-01-28'],
              dtype='datetime64[ns]', freq='D')
In [62]:
df_days = pd.DataFrame({"확진일자":days})
df_days.head()
Out[62]:
확진일자
0 2020-01-24
1 2020-01-25
2 2020-01-26
3 2020-01-27
4 2020-01-28
In [64]:
daily_case = df["확진일자"].value_counts()
daily_case.head()
Out[64]:
2020-03-10    46
2020-06-12    30
2020-06-06    29
2020-06-05    27
2020-03-09    26
Name: 확진일자, dtype: int64
In [66]:
df_daily_case = daily_case.to_frame()
df_daily_case
Out[66]:
확진일자
2020-03-10 46
2020-06-12 30
2020-06-06 29
2020-06-05 27
2020-03-09 26
... ...
2020-02-07 1
2020-02-06 1
2020-05-17 1
2020-05-31 1
2020-01-24 1

169 rows × 1 columns

In [68]:
df_daily_case.columns = ["확진수"]
df_daily_case.head()
Out[68]:
확진수
2020-03-10 46
2020-06-12 30
2020-06-06 29
2020-06-05 27
2020-03-09 26
In [69]:
# 확진자가 없는 날도 일자에 표현이 되도록 전체 일자와 확진 데이터를 merge 로 합치기
all_day = df_days.merge(df_daily_case,
                       left_on = "확진일자",
                       right_on = df_daily_case.index, how = 'left')
all_day.head()
Out[69]:
확진일자 확진수
0 2020-01-24 1.0
1 2020-01-25 NaN
2 2020-01-26 NaN
3 2020-01-27 NaN
4 2020-01-28 NaN

누적 확진자 수 구하기

In [71]:
# 확진수를 fillna를 통해 결측치를  0으로 채워주고 누적해서 더해준다
all_day["누적확진"] = all_day["확진수"].fillna(0).cumsum()
all_day
Out[71]:
확진일자 확진수 누적확진
0 2020-01-24 1.0 1.0
1 2020-01-25 NaN 1.0
2 2020-01-26 NaN 1.0
3 2020-01-27 NaN 1.0
4 2020-01-28 NaN 1.0
... ... ... ...
193 2020-08-04 6.0 1627.0
194 2020-08-05 9.0 1636.0
195 2020-08-06 9.0 1645.0
196 2020-08-07 17.0 1662.0
197 2020-08-08 13.0 1675.0

198 rows × 3 columns

In [73]:
# 연도를 제외하고 월-일로 "일자"컬럼 만들기
all_day["일자"] = all_day["확진일자"].astype(str).map(lambda x : x[-5:])
all_day.head()
Out[73]:
확진일자 확진수 누적확진 일자
0 2020-01-24 1.0 1.0 01-24
1 2020-01-25 NaN 1.0 01-25
2 2020-01-26 NaN 1.0 01-26
3 2020-01-27 NaN 1.0 01-27
4 2020-01-28 NaN 1.0 01-28
In [76]:
# 확진수, 누적확진 컬럼을 갖는 데이터프레임을 만듭니다.
cum_day = all_day[["일자", "확진수", "누적확진"]]
cum_day = cum_day.set_index("일자")
cum_day.head()
Out[76]:
확진수 누적확진
일자
01-24 1.0 1.0
01-25 NaN 1.0
01-26 NaN 1.0
01-27 NaN 1.0
01-28 NaN 1.0

데이터프레임으로 그리기

In [81]:
# 데이터 프레임으로 확진수와 누적확진을 선그래프로 그리기
cum_day.plot(figsize=(15, 4))
Out[81]:
<matplotlib.axes._subplots.AxesSubplot at 0x6454f30>

시리즈로 그리기

In [82]:
# 시리즈와 2개의 그래프 그리기
cum_day["확진수"].plot()
cum_day["누적확진"].plot(figsize=(15, 4))
Out[82]:
<matplotlib.axes._subplots.AxesSubplot at 0xd610f90>

확진수만 따로 그리기

In [84]:
# 누적확진수와 확진수와 차이가 크면 제대로 보이지 않기 때문에 확진수만 그리기
cum_day["확진수"].plot(figsize = (15,4))
Out[84]:
<matplotlib.axes._subplots.AxesSubplot at 0xd213110>

누적확진만 따로 그리기

In [85]:
# 누적확진만 따로 그리기
cum_day["누적확진"].plot(figsize=(15,4))
Out[85]:
<matplotlib.axes._subplots.AxesSubplot at 0xd883670>

로그 스케일

In [87]:
# 차이가 너무 커서 그래프가 안보일땐 로그 스케일로 표현하면 차이가 큰 값의 스케일을 조정해줌
np.log(cum_day["누적확진"]).plot(figsize=(15, 4))
np.log(cum_day["확진수"]).plot()
Out[87]:
<matplotlib.axes._subplots.AxesSubplot at 0xda31e70>

확진월과 요일 구하기

In [92]:
all_day["확진월"] = all_day['확진일자'].dt.month
all_day["확진요일"] = all_day["확진일자"].dt.dayofweek
all_day.head()
Out[92]:
확진일자 확진수 누적확진 일자 확진일 확진요일 확진월
0 2020-01-24 1.0 1.0 01-24 1 4 1
1 2020-01-25 NaN 1.0 01-25 1 5 1
2 2020-01-26 NaN 1.0 01-26 1 6 1
3 2020-01-27 NaN 1.0 01-27 1 0 1
4 2020-01-28 NaN 1.0 01-28 1 1 1

요일별 확진 수

In [94]:
# 월별, 요일별 확진수를 groupby로 구하기
all_day_week = all_day.groupby(["확진월", "확진요일"])["확진수"].sum()
all_day_week = all_day_week.unstack().astype(int)
all_day_week
Out[94]:
확진요일 0 1 2 3 4 5 6
확진월
1 0 0 0 3 4 0 0
2 4 16 14 19 11 9 7
3 69 89 46 44 48 45 50
4 16 17 28 27 26 22 20
5 27 36 34 34 32 36 29
6 55 67 66 75 90 70 37
7 37 42 42 58 34 40 28
8 9 6 9 9 17 17 5
In [96]:
# 숫자로 표현된 요일을 문자로 바꿔주기 위해 split으로 문자를 리스트로 변경한다
dayofweek = "월 화 수 목 금 토 일"
dayofweek = dayofweek.split()
dayofweek
Out[96]:
['월', '화', '수', '목', '금', '토', '일']
In [98]:
# 컬럼의 이름을 한글요일명으로 변경해준다
all_day_week.columns = dayofweek
all_day_week
Out[98]:
월 화 수 목 금 토 일
확진월
1 0 0 0 3 4 0 0
2 4 16 14 19 11 9 7
3 69 89 46 44 48 45 50
4 16 17 28 27 26 22 20
5 27 36 34 34 32 36 29
6 55 67 66 75 90 70 37
7 37 42 42 58 34 40 28
8 9 6 9 9 17 17 5
In [99]:
# style.background_gradient로 색상 표현
all_day_week.style.background_gradient(cmap = "Blues")
Out[99]:
월 화 수 목 금 토 일
확진월
1 0 0 0 3 4 0 0
2 4 16 14 19 11 9 7
3 69 89 46 44 48 45 50
4 16 17 28 27 26 22 20
5 27 36 34 34 32 36 29
6 55 67 66 75 90 70 37
7 37 42 42 58 34 40 28
8 9 6 9 9 17 17 5

거주지별 확진자

In [101]:
# 거주지(구별) 확진자의 빈도수를 구하고 시각화 한다
gu_count = df["거주지"].value_counts()
gu_count
Out[101]:
관악구    145
강서구    109
강남구    101
송파구    101
구로구     91
      ... 
안양       1
의왕시      1
아산시      1
양산시      1
안산시      1
Name: 거주지, Length: 64, dtype: int64
In [104]:
# 구별 확진자의 수를 시각화 한다
gu_count.sort_values().plot.barh(figsize = (10,12))
Out[104]:
<matplotlib.axes._subplots.AxesSubplot at 0xef0e1f0>
In [106]:
# 서울에서 확진 판정을 받은 데이터 이기 때문에 거주지가 서울이 아닐 수 도 있음
# 거주지 별로 서울시에 해당되는 데이터만 따로 가져온다
gu = gu_count[:25].index
gu
Out[106]:
Index(['관악구', '강서구', '강남구', '송파구', '구로구', '영등포구', '동작구', '양천구', '도봉구', '서초구',
       '은평구', '성동구', '용산구', '마포구', '성북구', '노원구', '강동구', '동대문구', '중랑구', '서대문구',
       '금천구', '종로구', '강북구', '광진구', '중구'],
      dtype='object')
In [108]:
# 거주지가 서울이 아닌 지역을 따로 추출한다
set(gu_count.index) - set(gu)
Out[108]:
{'경기광주',
 '경북',
 '고양시',
 '광명시',
 '구리시',
 '국외거주',
 '군포시',
 '기타',
 '김포시',
 '남양주',
 '대구',
 '대구시',
 '대전시',
 '미국',
 '부천시',
 '부평',
 '성남시',
 '수원시',
 '스페인',
 '시흥시',
 '아산시',
 '안산시',
 '안양',
 '안양시',
 '양산시',
 '양주시',
 '양평',
 '용인시',
 '의왕시',
 '의정부',
 '인천시',
 '재외국민',
 '주소불명',
 '천안시',
 '파주시',
 '평택시',
 '포천시',
 '하남시',
 '화성시'}
In [111]:
# 구를 전처리 하기 쉽게 컬럼으로 변환하기 위해 reset_index로 변환한다
df_gu = gu_count.reset_index()
df_gu.columns = ["구", "확진수"]
df_gu.head()
Out[111]:
구 확진수
0 관악구 145
1 강서구 109
2 강남구 101
3 송파구 101
4 구로구 91
In [115]:
# 서울의 확진자 와 타지역 비교 하기 위해 지역이라는 컬럼 만들고 아니라면 타지역
# 첫번째 방법
df.loc[df["거주지"].isin(gu), "지역"] = df["거주지"]
df["지역"] = df["지역"].fillna("타지역")
df["지역"].unique()
# 두번째 방법
df["지역"] = df["거주지"].map(lambda x : x if x in gu else "타지역")
df[["거주지", "지역"]].head()
Out[115]:
거주지 지역
0 하남시 타지역
1 기타 타지역
2 화성시 타지역
3 종로구 종로구
4 성북구 성북구
In [118]:
#지역 컬럼으로 확진자 빈도수를 구한다
gu_etc_count = df["지역"].value_counts()
gu_etc_count
Out[118]:
관악구     145
강서구     109
타지역     104
강남구     101
송파구     101
구로구      91
영등포구     74
양천구      72
동작구      72
도봉구      70
서초구      68
은평구      67
성동구      61
용산구      59
마포구      58
성북구      51
노원구      49
강동구      49
동대문구     46
중랑구      44
서대문구     42
금천구      39
종로구      30
강북구      28
광진구      23
중구       22
Name: 지역, dtype: int64
In [120]:
# 위에서 구한 빈도수로 막대그래프 그린다
gu_etc_count.sort_values().plot.barh(figsize=(8, 10))
Out[120]:
<matplotlib.axes._subplots.AxesSubplot at 0xf0246b0>

접촉력

In [122]:
# 접촉력 빈도수를 구한다
df["접촉력"].value_counts().head(20)
Out[122]:
해외 접촉 추정       337
확인 중           159
이태원 클럽 관련      139
리치웨이 관련        119
구로구 콜센터 관련      60
타시도 확진자 접촉      55
요양시설 관련         43
양천구 운동시설 관련     43
확인중             42
구로구 교회 관련       41
콜센터직원 접촉        37
수도권 개척교회 관련     37
강남구 사무실 관련      36
왕성교회 관련         30
동대문구 관련         28
부천시 쿠팡 관련       24
해외 접촉           22
송파구 교회관련        19
강서구 요양시설관련      15
은평구 병원 관련       14
Name: 접촉력, dtype: int64
In [124]:
# 접촉력의 unique 값만 구한다
df["접촉력"].unique()
Out[124]:
array(['강남구 확진자 접촉', '해외 접촉 추정', '타시도 확진자 접촉', '종로구 확진자 접촉', '성북구 확진자 접촉',
       '영등포구 확진자 접촉', '확인 중', '동작구 확진자 접촉', '서초구 확진자 접촉', '마포구 확진자 접촉',
       '#14483 접촉', '성동구 가족관련', '#14488 접촉', '도봉구 가족관련', '강남구 커피전문점',
       '선교회 소모임', '도봉구 확진자 접촉', '송파구 교회관련', '강서구 확진자 접촉', '송파구 확진자 접촉',
       '종로구 지인모임 신명투자', '강서구 요양시설관련', '강남구 사무실 K빌딩', '송파구 지인모임',
       '관악구 확진자 접촉', '중구 확진자 접촉', '강북구 확진자 접촉', '관악구 사무실 관련',
       '은평구 확진자 접촉', '강남구 사무실 관련', '강남역삼동 금융회사', '확인중', '강서구 요양시설 관련',
       '성동구 확진자 접촉', '강남구 이동통신 종사자', '강남구 역삼동 모임', '양천구 확진자 접촉',
       '용산구 확진자 접촉', '광진구 확진자 접촉', '왕성교회 관련', '중랑구 일가족 관련', '관악구 일가족 관련',
       '대전 꿈꾸는 교회', '리치웨이 관련', '구로구 확진자 접촉', '금천구 확진자 접촉', '요양시설 관련',
       '강동구 확진자 접촉', '시청역 관련', '대자연코리아', '의왕 물류센터 관련', '금천구 도정기 회사 관련',
       '양천구 운동시설 관련', '대전 다단계 관련', '오렌지라이프 관련', '수도권 개척교회 관련',
       '타시도 확진자 접촉자', '연아나뉴스클래스 관련', '한국대학생선교회 관련', '해외접촉 추정',
       'kb 생명보험 관련', '부천시 쿠팡 관련', '이태원 클럽 관련', '용인 형제 관련', '삼성화재 관련',
       '서초구 가족 관련', '안양군포 목회자 관련', '서초구 가족관련', '영등포 학원 관련', '강남구 동인교회 관련',
       '원어성경연구회 관련', '#11196 접촉', '삼성서울병원 관련', '#10054 접촉', '#9800 접촉',
       '#10044 접촉', '#9641 접촉', '구로구 교회 관련', '#10407 접촉', '#10015 접촉',
       '#9364 접촉', '#10377 접촉', '#9287 접촉', '#10142 접촉', '#9912 접촉',
       '#9765 접촉', '#10115 접촉', '타시도 확진자 접촉(추정)', '#8063 접촉', '#10084 접촉',
       '#8601 접촉', '#8717 접촉', '#9946 접촉', '콜센터직원 접촉', '#8271 접촉',
       '#8669 접촉', '#9734 접촉', '#9621 접촉', '#9572 접촉', '#9525 접촉',
       '#7914 접촉', '#8791 접촉', '#9219 접촉', '#8057 접촉', '#8079 접촉',
       '#8646 접촉', '#9020 접촉', '#8245 접촉', '#8709 접촉 추정', '#8881 접촉 추정',
       '구로구 콜센터 관련', '#8486 접촉', '동대문구 관련', '#8196 접촉', '#8138 접촉',
       '구로구 콜센터 접촉', '#8044 접촉', '해외 접촉', '#7923 접촉', '신천지 추정',
       '#7573 접축 추정', '#6959 접촉(추정)', '#7280 접촉(추정)', '#7500 접촉(추정)',
       '#6727 첩촉', '대구 거주', '#6832 접촉자', '#6921접촉자', '#935 접촉자',
       '#6937 접촉자', '성동구 아파트 관련', '대구 방문', '부동산 중개 법인 관련', '여의도 건설현장 관련',
       '대구 확진자 접촉', '명성교회 관련', '#794 접촉(추정)', '#2621번 접촉', '#1247 접촉(추정)',
       '부동산 중개업 관련', '쇼핑몰 관련', '은평구 병원 관련', '경찰병원관련', '서울재생병원 관련',
       '신천지대구교회 관련', '#794 접촉자', '대구 방문(명성교회)', '#780 접촉(추정)', '#56 접촉',
       '#136 접촉', '대구 거주자', '#6 접촉(추정)', '#30 접촉', '#29 접촉', '#83 접촉',
       '#6 접촉', '#5 접촉', '#3 접촉'], dtype=object)
In [126]:
# 확인이 들어가는 접촉력만 찾는다
df.loc[df["접촉력"].str.contains("확인"), "접촉력"].unique()
Out[126]:
array(['확인 중', '확인중'], dtype=object)
In [128]:
# 확인중, 확인 중 을 확인 중으로 변경
df.loc[df["접촉력"].str.contains("확인"), "접촉력"] = "확인 중"
In [130]:
#확인이 들어가는 접촉력만 찾기
df.loc[df["접촉력"].str.contains("확인"), "접촉력"].unique()
Out[130]:
array(['확인 중'], dtype=object)
In [133]:
# 접촉력 빈도수를 시각화
contact_count = df["접촉력"].value_counts()
contact_count_top = contact_count.sort_values().tail(30)
contact_count_top.plot.barh(figsize=(10, 12))
Out[133]:
<matplotlib.axes._subplots.AxesSubplot at 0x11cc9f10>
In [135]:
#상위 15개만 구한다
top_contact = contact_count_top.tail(15)
top_contact
Out[135]:
부천시 쿠팡 관련       24
동대문구 관련         28
왕성교회 관련         30
강남구 사무실 관련      36
수도권 개척교회 관련     37
콜센터직원 접촉        37
구로구 교회 관련       41
요양시설 관련         43
양천구 운동시설 관련     43
타시도 확진자 접촉      55
구로구 콜센터 관련      60
리치웨이 관련        119
이태원 클럽 관련      139
확인 중           201
해외 접촉 추정       337
Name: 접촉력, dtype: int64
In [137]:
# 접촉력 빈도수가 높은 목록에 대한 index값을 구해본다
top_contact.index
Out[137]:
Index(['부천시 쿠팡 관련', '동대문구 관련', '왕성교회 관련', '강남구 사무실 관련', '수도권 개척교회 관련',
       '콜센터직원 접촉', '구로구 교회 관련', '요양시설 관련', '양천구 운동시설 관련', '타시도 확진자 접촉',
       '구로구 콜센터 관련', '리치웨이 관련', '이태원 클럽 관련', '확인 중', '해외 접촉 추정'],
      dtype='object')
In [140]:
# 위에서 구한 top_contact에 해당되는 데이터만 isin으로 가져온다
top_group = df[df["접촉력"].isin(top_contact.index)]
top_group.head()
Out[140]:
연번 환자 확진일 거주지 여행력 접촉력 조치사항 확진일자 월 주 월일 지역
1 1674 14591 8.8. 기타 멕시코 해외 접촉 추정 서남병원 2020-08-08 8 32 08-08 타지역
2 1673 14567 8.8. 화성시 - 타시도 확진자 접촉 타시도 이관 2020-08-08 8 32 08-08 타지역
7 1668 14576 8.8. 광진구 - 타시도 확진자 접촉 서울의료원 2020-08-08 8 32 08-08 광진구
8 1667 14569 8.8. 마포구 - 확인 중 서울의료원 2020-08-08 8 32 08-08 마포구
10 1665 14575 8.8. 도봉구 인도 해외 접촉 추정 서남병원 2020-08-08 8 32 08-08 도봉구
In [143]:
# 접촉력, 월별 빈도수를 groupby로 구한다
top_group.groupby(["접촉력", "월"])["연번"].count().unstack().fillna(0).astype(int)
Out[143]:
월 2 3 4 5 6 7 8
접촉력
강남구 사무실 관련 0 0 0 0 2 34 0
구로구 교회 관련 0 35 6 0 0 0 0
구로구 콜센터 관련 0 60 0 0 0 0 0
동대문구 관련 0 28 0 0 0 0 0
리치웨이 관련 0 0 0 0 119 0 0
부천시 쿠팡 관련 0 0 0 19 5 0 0
수도권 개척교회 관련 0 0 0 0 37 0 0
양천구 운동시설 관련 0 0 0 0 43 0 0
왕성교회 관련 0 0 0 0 25 5 0
요양시설 관련 0 0 0 0 43 0 0
이태원 클럽 관련 0 0 0 133 6 0 0
콜센터직원 접촉 0 36 1 0 0 0 0
타시도 확진자 접촉 5 17 4 2 6 17 4
해외 접촉 추정 1 121 112 24 23 39 17
확인 중 11 28 9 12 75 50 16

이태원 클럽 감염

In [144]:
df[df["접촉력"].str.contains("이태원")& (df["월"]== 6 )]
Out[144]:
연번 환자 확진일 거주지 여행력 접촉력 조치사항 확진일자 월 주 월일 지역
695 980 11786 6.06. 성동구 - 이태원 클럽 관련 서울의료원(퇴원) 2020-06-06 6 23 06-06 성동구
710 965 11741 6.06. 은평구 - 이태원 클럽 관련 보라매병원(퇴원) 2020-06-06 6 23 06-06 은평구
719 956 11730 6.06. 성동구 - 이태원 클럽 관련 서울대병원(퇴원) 2020-06-06 6 23 06-06 성동구
726 949 11775 6.05. 은평구 - 이태원 클럽 관련 국립중앙의료원(퇴원) 2020-06-05 6 23 06-05 은평구
741 934 11687 6.05. 성동구 - 이태원 클럽 관련 보라매병원(퇴원) 2020-06-05 6 23 06-05 성동구
799 876 11535 6.01. 강동구 - 이태원 클럽 관련 서울의료원(퇴원) 2020-06-01 6 23 06-01 강동구

감염경로 불명

In [149]:
# 접촉력이 확인중인 데이터만 구한다
df_unknown = df[df["접촉력"] == "확인 중"]
df_unknown.head()
Out[149]:
연번 환자 확진일 거주지 여행력 접촉력 조치사항 확진일자 월 주 월일 지역
8 1667 14569 8.8. 마포구 - 확인 중 서울의료원 2020-08-08 8 32 08-08 마포구
16 1659 14549 8.7. 마포구 - 확인 중 서남병원 2020-08-07 8 32 08-07 마포구
17 1658 14560 8.7. 성북구 - 확인 중 서북병원 2020-08-07 8 32 08-07 성북구
18 1657 14545 8.7. 성북구 - 확인 중 서북병원 2020-08-07 8 32 08-07 성북구
19 1656 14535 8.7. 강남구 - 확인 중 서남병원 2020-08-07 8 32 08-07 강남구
In [150]:
# 감염경로 불명이 어느정도인지 보기
unknown_weekly_case = df_unknown.groupby(["월", "주"])["연번"].count()
unknown_weekly_case.plot.bar(figsize=(15, 4))
Out[150]:
<matplotlib.axes._subplots.AxesSubplot at 0x1590a4b0>
In [151]:
# 전체 확진수를 Values로 구하고 데이터 프레임 형태로 만들기
all_weekly_case = df["주"].value_counts().to_frame()
all_weekly_case.columns = ["전체확진수"]
all_weekly_case.head()
Out[151]:
전체확진수
23 134
14 128
24 125
11 124
25 106
In [153]:
# 전체 확진수를 Values로 구하고 데이터 프레임 형태로 만들기
unknown_weekly_case = df_unknown["주"].value_counts().to_frame()
unknown_weekly_case.columns = ["불명확진수"]
unknown_weekly_case.head()
Out[153]:
불명확진수
24 25
23 18
25 16
32 15
30 14
In [154]:
# all_weekly_case 와 unknown_weekly_case 를 비교
unknown_case = all_weekly_case.merge(unknown_weekly_case, left_index=True, right_index=True)
unknown_case = unknown_case.sort_index()
unknown_case.head()
Out[154]:
전체확진수 불명확진수
9 62 11
10 37 4
11 124 11
12 76 9
13 105 3
In [156]:
# 위에서 구한 결과를 시각화
unknown_case.plot(figsize = (15,4))
Out[156]:
<matplotlib.axes._subplots.AxesSubplot at 0xf052050>
In [157]:
# 감영 경로 "확인중"의 주별 비율
unknown_case["확인중비율"] = (unknown_case["불명확진수"] / unknown_case["전체확진수"]) * 100
unknown_case["확인중비율"].plot.bar(figsize = (15,4))
Out[157]:
<matplotlib.axes._subplots.AxesSubplot at 0x156796f0>