[Data] NETCDF-4 형식의 데이터 셋을 다뤄보기

2024. 7. 20. 19:12study/DL(1)

 

데이터는 머신러닝(Machine Learning) 및 딥러닝(Deep Learning) 모델의 학습에서 가장 중요한 요소 중 하나입니다. 데이터의 중요성은 단순히 모델의 입력을 제공하는 것에 그치지 않고, 모델의 성능과 예측의 정확성을 결정하는 데 핵심적인 역할을 합니다. 데이터의 품질과 양은 모델이 어떻게 학습하고 일반화할 수 있는지를 결정짓는 중요한 요소입니다.

 

 

데이터를 다룰 때는 데이터의 형식, 수집 방법, 통계적 특성 등을 고려해야 합니다. 데이터 형식에는 여러 가지가 있으며, 이 포스팅에서 사용하려는 형식은 NetCDF-4입니다. NetCDF-4 형식은 데이터를 정확하게 저장하고 반영하는 파일 형식으로, 노이즈의 영향을 적게 받는 편입니다.

 

 

구글 코랩을 이용하여 데이터셋을 다뤄보겠습니다. 

 

 

1. 다룰려고하는 데이터 셋을 구글 드라이브에 업로드 하겠습니다.

위의 사진은 사용할려는 nc파일을 내 드라이브에 업로드된 모습입니다. 다음은 코랩으로 넘어가서 코드를 짜보겠습니다.

 

 

 

2. 구글 드라이브에 연동하기 위해 아래와 같은 코드를 입력해주세요.

from google.colab import drive
drive.mount('/content/gdrive')

 

 

3. 코랩에서 사용할 라이브러리를 설치해주겠습니다.

!pip install netCDF4 pandas

 

 

 

4.  netCDF4, pandas, numpy 라이브러리를 불러오겠습니다.

import netCDF4 as nc
import pandas as pd
import numpy as np

 

 

 

5. 이제 구글 드라이브에 저장해놓은 nc파일을 불러오면 되는데요. 구글 드라이브에 저장해놓은 파일의 경로를 찾을때 1번의 드라이브 화면말고 코랩에서 바로 파일의 경로를 복사하여 사용할 수 있습니다. 

gdrive->MyDrive에 들어가서 사용할 데이터셋자료를 우클릭하면 '경로복사'가 뜨며 클릭하면 자동으로 경로 복사가 됩니다.

 

 

 

 

6. netCDF4라이브러리를 이용해서 파일을 불러와야합니다.

data_set = nc.Dataset("복사한 경로를 입력")

 

 

7. pandas라이브러리는 시리즈라는 기본적인 자료형을 사용합니다. 다수의 시리즈들을 모아 처리한 것을 DataFrame라 부릅니다. 쉽게 말하자면 엑셀이라고 생각하면 됩니다. 표로 데이터를 나타낼 수 있는 라이브러리이죠. 아래의 코드는 데이터 구조에 따라 변경될 수 있기때문에 파일의 맞게 설정해주어야 합니다. 

data = {}
for var in data_set.variables:
    data[var] = data_set.variables[var][:]

data_set의 모든 변수를 순회하기 위해 for 문을 사용합니다. 딕셔너리 형태로 만든 data에 저장하도록 배열 형태로 추출됩니다.

 

 

8. pandas라이브러리는 딕셔너리 형태를 표로 만들 수 있습니다. 아래의 코드로 데이터들을 표로 만들고 출력해보겠습니다.출력을 해보면 해당 파일의 있는 data들이 pandas 라이브러리를 이용했기 때문에 표 형태로 출력되게 됩니다.

data_set = pd.DataFrame(data)
data_set.head()

 

 

 

9. Pandas는 표로 표현된 데이터들을 연산할 수 있습니다. 예를들어 00카드의 고객정보에 대한 데이터 셋인 경우 고객이름들만 출력하고 싶을 때 아래의 코드로 접근할 수 있습니다.

data_set['고객 이름']

뭔가 익숙합니다. 파이썬의 딕셔너리에서 key값을 통해 value에 접근할 때와 같다고 할 수 있습니다. 또한 더하기, 빼기, 나누기 등의 연산 뿐만아니라 평균, 표준편차 등 데이터의 통계량도 구할 수 있습니다.

 

 

10. 이번에는 데이터셋을 시각화해보겠습니다.  데이터를 시각화할 수 있는 라이브러리로 matplotlib를 사용해보겠습니다.

import matplotlib.pyplot as plt
%matplotlib inline

 

 

 

 

11.fig와 ax는 Matplotlib라이브러리에서 그래프를 그리기 위한 객체들입니다. fig는 Figure로 도화지라고 생각하시면 되고, ax는 Axes로 그래프를 그릴 수 있는 영역이라고 할 수 있습니다. 도화지와 도화지 위에 그릴 영역을 코드로 구현해보겠습니다.

fig, ax = plt.subplots()

 

 

 

12. 산점도(scatter plot)는 데이터 시각화에서 자주 사용됩니다. 좌표평면 위에서 이차원의 자료값을 점으로 찍어내기 때문에 두 데이터간의 변화관계를 파악하기 쉽습니다. 두 변수 사이의 상관관계를 그림으로 나타낼 수 있는 가장 간편한 방법입니다.

data_set.plot.scatter(x="비교할 변수 key",y="비교할 변수 key", ax=ax)
ax.set_title("그래프 제목")
ax.grid()

예를들어, 00카드사의 고객들의 나이와 월 카드 사용액을 비교하고 싶다면 data_set의 나이와 월 카드 사용액에 해당하는 key값을 scatter x,y변수에 지정해주면 되겠습니다.

 

 

 

'study > DL(1)' 카테고리의 다른 글

[Gradient Descent]  (2) 2024.07.11
[ML]  (0) 2024.07.09