[3주차_데이터분석] 개발일지 (코로나 데이터 분석-차트그리기)

Coastby·2022년 7월 11일
0
post-custom-banner

[3주차 목표]
1. 데이터프레임 사용법을 익힌다.
2. 👉파이썬을 이용해서 데이터를 각종 차트로 시각화해본다.👈
3. 상관 관계 분석에 대해서 이해한다.

[목차]

  • Line chart
  • Bar chart
  • Pie chart

캐글의 코로나 확진 데이터를 통해 그래프를 그려본다. 2020-01월부터 06월까지의 4가지 테이블 (patient info, case, time-age, time-gender) 을 이용한다.

#패키지 임포트
import matplotlib.pyplot as plt
import seaborn as sns

✍️ Line chart


series이름.plot()을 사용하면 인덱스를 x축으로 실제 값을 y축으로 사용하여 그래프를 그려준다.

○ 일별 확진자 그래프

patient information 데이터를 통해

confirme_date을 기준으로 케이스 환자 수를 세어서 일별 확진자 그래프를 만든다.

#날짜별 확진자 선형그래프
p_info.groupby('confirmed_date')['patient_id'].count() # 날짜별 확진자 테이블
plt.rcParams['figure.figsize'] = (15, 5) # 그래프사이즈 조정
daily_count.plot() # 그래프 생성
plt.title('Number of Daily Confirmed Patients') #그래프 제목
plt.show()

daily_count = p_info['confirmed_date'].value_counts().sort_index()
처음에 이런 코드로 만들었더니 값을 기준으로 정렬이 되어서 이런 그래프가 나왔다. 하지만 뒤에 sort_index()를 붙여서 인덱스 순으로 정렬하면 강의자료와 같은 그래프가 나온다. 하지만 빈 값이 있으면 다른 그래프가 나온다.


○ 누적 확진자 그래프

cumsum()을 이용한다.

#누적 확진자수 선형그래프
accumulated_count = daily_count.cumsum()
accumulated_count.plot()
plt.title('Accumulated Number of Daily Confirmed Patients')


✍️Bar chart


○ 대구의 구별 확진자 수 그래프


확진자 케이스 자료를 이용해 대구의 구별로 확진자의 수를 나타내는 bar chart를 만들어본다. province열에 도시이름이 들어가고 city열에 구이름이 들어간 것을 확인한다.
먼저, 대구 자료만 조건을 이용해 가져온다.

#대구 케이스만 가져온다
case[case['province']=='Daegu]

이전에는 matplot을 이용하였는데, 이번에는 seaborn의 barplot()이란 기능을 통해 바차트를 그린다.
sns.barplot(data=데이터프레임, x='열의 이름', y='열의이름', ci=None).set(xlabel='x축레이블', ylabel='y축레이블', title='차트타이틀'

#x축에는 확진자수, y축에는 구를 넣어서 바차트를 만든다
sns.barplot(data=case[case['province'] == 'Daegu'], x='confirmed', y='city', ci=None).set(xlabel='Confirmed', ylabel='District', title='Case in Daegu')


○ 서울의 구별 확진자 수

#서울에서 발생한 케이스만 가져온다
case[case['province']=='Seoul']

#바차트 작성
sns.barplot(data=case[case['province']=='Seoul'], x='city', y='confirmed', ci=None).set(xlabel='Confirmed', ylabel='District', title='Case in Seoul')

sns.barplot()은 막대그래프가 총 합이 아니라 평균값을 보여준다.


✍️ Pie chart


○ 2020년 6월 30일 성별 확진자 비율

확진자 성별 데이터를 이용해 2020-06-30일에 확진된 수를 가져온다.

#날짜에 맞는 자료만 가져온다.
t_gender[t_gender['date']=='2020-06-30']['confirmed']

#result
240    5495
241    7305
Name: confirmed, dtype: int64

파이 차트를 만들려면

  • 데이터 이름이 담긴 리스트 (레이블)
  • 이름에 해당하는 데이터 값이 담긴 리스트 (실질적 데이터)

가 필요하다.

#필요한 리스트를 만든다.
pie_labels = [male, female]
pie_values = t_gender[t_gender['date']=='2020-06-30']['confirmed'].values().tolist()

파이 차트는 plt.pie(데이터값리스트, labels=레이블리스트)로 만든다.

#파이차트 만들기
plt.pie(pie_values, labels=pie_labels, autopct='%.02f%%')
plt.title('Confirmed Case (2020-06-30)')
plt.show()

○ 2020년 6월 30일 연령별 확진자 비율


날짜별-연령별 확진자 데이터를 통해서 파이차트를 만든다.

#원하는 날짜데이터만 가져와서 변수에 저장한다.
population_by_age = t_age[t_age['date']=='2020-06-30']
print(population_by_age)

#result
            date  time  age  confirmed  deceased
1080  2020-06-30     0   0s        193         0
1081  2020-06-30     0  10s        708         0
1082  2020-06-30     0  20s       3362         0
1083  2020-06-30     0  30s       1496         2
1084  2020-06-30     0  40s       1681         3
1085  2020-06-30     0  50s       2286        15
1086  2020-06-30     0  60s       1668        41
1087  2020-06-30     0  70s        850        82
1088  2020-06-30     0  80s        556       139
#레이블, 데이터 리스트 작성
pie_labels = population_by_age['age'].values.tolist()
pie_values = population_by_age['confirmed'].values.tolist()

#파이 차트 만들기
plt.figure(figsize=(7,7))
plt.pie(pie_values, labels=pie_labels, autopct='%.2f%%')
plt.title('Confirmed Distribution by age')
plt.show()

👉 그래프 사이즈 조절
plt.figure(figsize=(7,7))과 같은 사이즈 조절하는 코드는 plt.show()보다 위에 있어야 반영이 된다.

profile
훈이야 화이팅
post-custom-banner

0개의 댓글