5조 코드 리딩
순서
- 코드 메소드
- 코드 목적
- 코드 결과
- 느낀점/의문점
- 예시 분석
코드 메소드
1. 구글 드라이브 연동
Google Colab을 활용해서 구글 드라이브에 있는 데이터에 접근할 수 있습니다. 이를 위해선, 구글 드라이브를 마운트하고, Colab에서 /content/drive 경로를 통해 파일에 접근합니다.
2. 데이터 불러오기 및 전처리
데이터 처리와 분석에는 주로 pandas, numpy, matplotlib 등의 모듈을 사용합니다. pandas는 데이터를 처리하고 분석하는 데 사용되는 엑셀 같은 도구이며, numpy는 선형대수학 문제를 다루는 도구입니다. matplotlib는 데이터를 그래프로 시각화하는 도구입니다. 이러한 모듈들을 사용하여 데이터를 불러오고, 전처리를 진행합니다.
데이터는 pd.read_csv(경로) 함수를 사용해 CSV 파일로부터 읽어오며, 데이터의 개요는 info 함수를 통해 확인할 수 있습니다. info 함수는 데이터의 각 컬럼의 데이터 수와 자료형을 확인하는데 사용됩니다.
3. 특정 년도의 데이터 추출
'서울시 기준일'의 각 날짜 값에서 2021년과 2022년에 해당하는 데이터만 추출하기 위해 리스트를 생성하고, for문을 사용하여 해당 데이터를 추출합니다. 이후, 2021년과 2022년에 해당하는 데이터만 담긴 새로운 DataFrame을 생성합니다.
4. 피벗 테이블 생성
피벗 테이블은 데이터를 요약하여 보여주는 테이블 형식의 통계 표입니다. '서울시 기준일'을 인덱스로, '서울시 확진자', '전국 확진'을 값으로 하는 피벗 테이블을 생성합니다. 이를 통해 일별로 데이터를 정리하고, 월별로 데이터를 묶을 수 있습니다.
5. 그래프 그리기
matplotlib를 사용해 데이터를 시각화합니다. x축에는 월별 날짜를, y축에는 '서울시 확진자', '전국 확진'의 데이터를 사용해 그래프를 그립니다. 이 과정에서 그래프의 크기, 레이블, 범례 등을 설정할 수 있습니다.
6. 마무리
이와 같은 과정을 통해 서울시의 코로나19 확진자 발생 동향을 분석하고 시각화할 수 있습니다. 이를 통해 코로나19의 트렌드와 패턴을 파악하고, 이를 바탕으로 적절한 대응책을 마련하는 데 도움을 줄 수 있습니다
코드 사용방법
먼저, Python 기반의 코드를 작성하고 실행하기 위한 환경으로 Google Colab을 사용하겠습니다. 이를 사용하면 로컬 컴퓨터가 아닌 구글 서버에서 코드를 실행할 수 있으며, Google Drive에 저장된 데이터에도 쉽게 접근할 수 있습니다.
1. **Google Drive 연동**
Google Colab에서 Google Drive를 연동하려면 다음과 같이 코드를 작성합니다.
from google.colab import drive
drive.mount('/content/drive')
이 코드를 실행하면, Google Account로 로그인하고 인증 코드를 입력하는 과정을 거쳐 Google Drive를 Google Colab에 연동할 수 있습니다. 연동 후에는 '/content/drive' 경로를 통해 Google Drive에 저장된 파일에 접근할 수 있습니다.
2. **데이터 불러오기 및 전처리**
데이터를 불러오고 전처리하는 과정에는 주로 pandas, numpy, matplotlib 모듈을 사용합니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
CSV 파일을 pandas DataFrame으로 읽어오려면, `pd.read_csv()` 함수를 사용합니다. 이 때, Google Drive에 저장된 파일의 경로를 입력해야 합니다.
df = pd.read_csv('/content/drive/MyDrive/path/to/your/data.csv')
데이터의 각 열의 데이터 수, 자료형 등을 확인하려면 `info()` 함수를 사용합니다.
df.info()
3. **특정 년도의 데이터 추출**
특정 년도의 데이터만 추출하려면, 다음과 같은 과정을 거칩니다. 여기서는 '서울시 기준일' 열에서 2021년과 2022년의 데이터만 추출하는 예제를 보여드리겠습니다.
list_2021 = df[df['서울시 기준일'].str.contains('2021')]
list_2022 = df[df['서울시 기준일'].str.contains('2022')]
df_21_22 = pd.concat([list_2021, list_2022])
4. **피벗 테이블 생성**
피벗 테이블은 데이터를 요약하여 보여주는 통계 표입니다. pandas의 `pivot_table()` 함수를 사용해 피벗 테이블을 만들 수 있습니다.
pivot = df.pivot_table(index='서울시 기준일', values=['서울시 확진자', '전국 확진'])
5. **그래프 그리기**
마지막으로 matplotlib을 사용해 데이터를 시각화합니다. 월별 '서울시 확진자'와 '전국 확진'의 추이를 보여주는 그래프를 그립니다.
plt.figure(figsize=(10, 5))
plt.plot(pivot.index, pivot['서울시 확진자'], label='서
코드 목적
이 코드의 목적은 "서울시의 코로나19 확진자 추이"를 분석하고 이를 시각화하는 것입니다. 더 구체적으로, 2021년과 2022년의 데이터를 추출하여, 해당 기간 동안 서울시 내에서 코로나19 확진자 수가 어떻게 변화했는지를 파악하고자 하는 것입니다.
첫 단계에서는 Google Colab 환경을 사용하여 Google Drive를 연동합니다. 이는 사용자가 자신의 Google Drive에 저장된 데이터에 접근하고, 이를 분석하는 데 필요한 코드를 실행할 수 있게 해줍니다. 이렇게 하면 로컬 컴퓨터의 자원을 사용하지 않고도, 클라우드 기반의 강력한 계산 자원을 활용하여 데이터 분석을 진행할 수 있습니다.
데이터를 불러오는 단계에서는 pandas라는 Python 라이브러리를 사용합니다. pandas는 효율적인 데이터 처리와 분석을 위한 고수준의 데이터 구조와 데이터 분석 도구를 제공합니다. 이를 통해 CSV 파일 형태로 저장된 데이터를 불러오고, 이를 DataFrame이라는 테이블 형태의 데이터 구조로 변환하여 처리합니다. 또한, DataFrame의 `info()` 메서드를 사용하여 데이터의 개요를 빠르게 확인할 수 있습니다.
데이터 전처리 단계에서는 '서울시 기준일' 열의 값 중에서 2021년과 2022년을 포함하는 데이터만 추출합니다. 이를 통해 분석 대상을 해당 두 년도로 제한하고, 불필요한 데이터를 제외하여 분석의 효율성을 높입니다.
피벗 테이블 생성 단계에서는 pandas의 `pivot_table()` 함수를 사용하여 '서울시 기준일'을 인덱스로, '서울시 확진자'와 '전국 확진'을 값으로 가지는 피벗 테이블을 만듭니다. 피벗 테이블은 데이터를 요약하고 구조화하는 데 매우 유용한 도구로, 이를 통해 특정 기간 동안의 확진자 수의 변화를 쉽게 파악할 수 있습니다.
마지막으로 matplotlib 라이브러리를 사용하여 데이터를 시각화합니다. 이를 통해 숫자로만 이루어진 데이터보다 직관적이고 이해하기 쉬운 그래프 형태로 정보를 표현하게 됩니다. 이렇게 시각화를 통해, 사용자는 코로나19 확진자 수의 추세와 패턴을 단순한 데이터를 보는 것 보다 빠르고 쉽게 파악 할 수 있게 됩니다.
코드 결과
이 코드의 결과물은 2021년과 2022년에 걸친 서울시의 코로나19 확진자 추이를 나타내는 시각적인 그래프입니다. 그래프에서 확인할 수 있는 대표적인 특징 중 하나는 2022년 2월 말부터 3월에 걸쳐 확진자 수가 급격히 늘어나는 점입니다.
이러한 추세는 특정 이유들로 인해 발생할 수 있습니다. 먼저, 이 시기에 감염병의 전파력이 강한 새로운 변이 바이러스가 출현했을 수 있습니다. 새로운 변이가 나타나면, 기존에 효과적이었던 백신이나 치료법이 더 이상 효과적이지 않을 수 있기 때문에, 확진자 수가 증가하는 것은 그럴듯한 시나리오입니다.
두번째로, 사회적 거리두기나 방역 조치의 완화가 이 시기에 이루어졌을 수 있습니다. 방역 조치가 완화되면 사람들의 접촉이 늘어나고, 이에 따라 바이러스의 전파 가능성이 증가하게 됩니다.
세번째로, 이 시기에 대규모 집단 감염 사건이 발생했을 수도 있습니다. 학교, 직장, 종교시설 등에서의 대규모 집단 감염은 한 번에 많은 수의 확진자를 발생시키므로, 확진자 수의 급증을 초래할 수 있습니다.
마지막으로, 이 시기에 검사 능력이나 검사 수가 증가했을 수도 있습니다. 코로나19 검사를 더 많이 하게 되면, 이전에 발견되지 않았던 확진자들을 찾아낼 수 있게 되므로 확진자 수가 증가하는 것처럼 보일 수 있습니다.
그러나 이러한 이유들은 가설에 불과하며, 이 코드만으로는 확진자 수의 급증을 명확하게 설명할 수 없습니다. 이에 대한 보다 정확한 해석을 위해서는 더 많은 데이터와 배경 정보, 그리고 전문적인 지식이 필요합니다. 또한, 이러한 가설을 검증하기 위해 추가적인 데이터 분석이나 연구가 필요합니다.
느낀점/의문점
앞서 결과에서도 말했 듯, 이 코드와 코드가 출력하는 데이터 만으로는 데이터에 따른 분석이나 추론은 가능하지만 확진자 수의 급증을 명확하게 설명할 수는 없습니다. 이 코드에 대해 분석하면서 더 확실한 자료를 통해 실제로는 어떤한 원인들이 확진자 수의 급증에 배경에 있었는지 알고 싶어졌습니다. 또한, 코드를 통한 분석 후 초론한 것과 실제 간의 차이가 얼마나 있는지 궁금해졌습니다.
코드 자체의 과정에서 어려움, 의문
(어려움)
1. 코드의 이해
--> pandas, matplotlib와 같은 라이브러리를 이용한 코드가 생소하게 다가와 어렵게 느껴졌습니다. 각 코드 라인이 어떤 작업을 수행하는지, 왜 그 작업이 필요한지 이해하는데 시간이 오래걸렸습니다.
2. 데이터의 이해
--> 데이터의 출처, 데이터의 구조, 각 컬럼이 무슨 의미인지 등에 대한 이해가 어려웠습니다. 특히 시간에 따른 변화를 나타내는 데이터를 다루는 것은 복잡했습니다.
3. 결과 해석의 어려움
--> 위에서 언급한 것처럼, 2022년 2월 말부터 3월에 확진자 수가 급증한 원인을 정확하게 알아내는 것이 어려웠습니다. 단순히 코드를 작성하고 그래프를 그리는 것 이상의 능력, 즉 데이터를 깊이 있게 이해하고 분석하는 능력이 필요하다고 느꼈습니다. 물론 이 경우에는 다들 잘 알고 있는 데이터라 쉽게 추론이 가능했지만, 생소한 분야의 데이일 경우 데이터에 대한 깊은 이해와 분석이 코드와 별개로 필요한 부분일 것 같습니다.
(의문점)
1. 어떻게 코드를 더 잘 이해하고 사용할 수 있을까?
파이썬과 데이터 분석 라이브러리에 대한 더 깊은 이해를 위해서는 어떤 학습 자료나 코스를 이용하면 좋을지에 대한 궁금해졌습니다.
2. 어떻게 결과를 더 잘 해석할 수 있을까? 이 경우의 확진자 수의 급증과 같은 현상에 대한 원인을 분석하려면 어떤 추가적인 데이터나 지식이 필요한지, 어떤 추가적인 분석 기법을 사용해야 할지에 대해 궁금해졌습니다.
예시 분석
(2020-2022 EPL 시즌 득점 상위 10명 분석 막대 그래프)
Alfreddo Serrano가 EPL Data Science Association에게 제공 받은 자료를 기반으로 만든 코드를 라인별 분석해 보았습니다.
먼저 해당 코드입니다.
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import plotly.figure_factory as ff
import plotly.graph_objects as go
import numpy as np
import seaborn as sns
import squarify
import matplotlib
import plotly.express as px
import os
data_path = None
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
if filename.endswith(".csv"):
data_path = os.path.join(dirname, filename)
break
if data_path is not None:
break
if data_path is not None:
data = pd.read_csv(data_path)
data.head()
fig_bar = px.bar(data_frame=data.nlargest(10, 'Goals')[['Name', 'Goals']],
x='Name', y='Goals', color='Goals', text='Goals')
fig_bar.update_traces(marker=dict(line=dict(color='#000001', width=2)))
fig_bar.update_layout(title_text='Top 10 Goal Kings of the League', # Title for section
title_x=0.5, title_font=dict(size=30)) # Location and the font size of title
fig_bar.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig_bar.show()
else:
print("CSV file not found!")
라인별 분석입니다
- import matplotlib.pyplot as plt: 이것은 데이터 시각화 라이브러리인 Matplotlib를 불러오는 코드입니다.
- import pandas as pd: 데이터 처리 및 분석 라이브러리인 Pandas를 불러옵니다.
- import seaborn as sns: 데이터 시각화 라이브러리인 Seaborn을 불러옵니다.
- import plotly.figure_factory as ff: Plotly의 figure_factory 모듈을 불러옵니다. 이 모듈은 복잡한 플롯을 만들기 위한 함수를 제공합니다.
- import plotly.graph_objects as go: Plotly의 graph_objects 모듈을 불러옵니다. 이 모듈은 시각화를 만들기 위한 저수준 인터페이스를 제공합니다.
- import numpy as np: 수치 연산 라이브러리인 Numpy를 불러옵니다.
- import seaborn as sns: 데이터 시각화 라이브러리인 Seaborn을 또 다시 불러옵니다. 이것은 중복되는 코드이므로 제거해도 됩니다.
- import squarify: Treemap을 생성하기 위한 Squarify를 불러옵니다.
- import matplotlib: 이것은 Matplotlib 전체를 불러오는 코드입니다. 이미 matplotlib.pyplot를 불러왔으므로, 이 줄은 필요하지 않을 수 있습니다.
- import plotly.express as px: Plotly의 express 모듈을 불러옵니다. 이 모듈은 데이터 시각화를 위한 고수준 인터페이스를 제공합니다.
- import os: 파일과 디렉토리를 다루기 위한 os 모듈을 불러옵니다. 12-17. os.walk를 사용해 '/kaggle/input' 디렉토리와 그 하위 디렉토리를 순회하며, .csv 파일을 찾습니다. 찾으면 그 파일의 경로를 data_path에 저장하고 순회를 중단합니다. 18-25. 찾은 .csv 파일을 Pandas로 읽어서 데이터 프레임을 만들고, 이를 이용해 'Goals'가 가장 많은 상위 10명의 선수들에 대한 막대 그래프를 만듭니다. 26-29. 그래프의 마커, 제목, 글꼴 크기 등의 스타일을 지정합니다.
- 그래프의 텍스트 템플릿과 위치를 설정합니다.
- 만든 그래프를 보여줍니다. 32-34. 만약 .csv 파일을 찾지 못했다면, "CSV file not found!"라는 메시지를 출력합니다.
'Study > Code Reading' 카테고리의 다른 글
Code Reading #1 (0) | 2023.05.15 |
---|