23년 1월의 공부 - code formatter(black), np.cov, yaml로 정보 관리하기
포스트
취소

23년 1월의 공부 - code formatter(black), np.cov, yaml로 정보 관리하기

2023년 1월 동안 검색하고 공부한 것들을 정리한 내용입니다.

1. Black으로 코드 포맷팅하기

Black은 파이썬의 여러 code-formatter 중 하나입니다. Code-formatter란 Python 고유의 코드 스타일 가이드인 ‘PEP 8’이나, 본인 팀 고유의 코드 스타일이나 규칙 같은 코드를 정리하는 방식을 의미합니다. 개인적으로 Black의 코드 스타일이 가독성이 매우 좋다는 느낌은 아니었으나, 일관된 형태의 코드 스타일을 제공한다는 점에서 사용하는데 편의성이 있었습니다.

설치

1
pip install black

사용법

black을 사용하는 방법은 다음과 같은 command를 입력을 하시면 됩니다.

1
2
3
4
5
# 방법1
black test.py

# 방법2
python -m black test.py

이러한 과정이 번거로우신 분 중 VSCode를 사용하시는 분은 관련 링크를 참고하시면 VSCode를 저장할 때 자동으로 포맷을 수정할 수 있습니다.

2. np.cov

numpy.cov(m, y=None, rowvar=True, ddof=None, fweights=None, aweights=None, *, dtype=None)

np.cov 함수는 (sample) variance-covariance matrix를 계산하는 함수입니다. 옵션들 중 몇 가지 사용에 주의해야 할 내용들은 다음과 같습니다.

  • rowvar=True(default): True인 경우, 행렬의 행을 변수(variable)를 그리고 열을 관측치(observation)로 두고 계산을 합니다. (주로) tabular data는 행이 관측치(또는 샘플), 열이 변수를 의미하므로 해당 옵션의 값을 주의해야 합니다.

  • ddof: ddof=1은 (sample) covariance matrix의 분모가 ‘N-1’인 경우를 의미하고, ‘ddof=0’은 분모가 ‘N’인 경우를 의미합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np

m = np.array([1,2,3])
n = np.array([1,4,9])

X = np.stack((m,n), axis=0)

print(f"{X=}")
# X=array([[1, 2, 3],
#        [1, 4, 9]])

print(np.cov(m,n, rowvar=True, ddof=1))
# [[ 1.          4.        ]
#  [ 4.         16.33333333]]

3. yaml로 정보 관리하기

아래처럼 yaml 파일을 이용해 필요한 정보(경로, api key 등)를 관리할 경우 코드에 직접 작성하는 것보다 지속적인 관리나 보안적인 측면에서 이점이 있습니다.

1
2
3
4
5
6
7
8
# info.yml
home_path: /work/dir
out_path: /work/dir/out

data: item.csv
api:
       url: endpoint_of_api
       key: ddddddddd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import yaml

CONFIG_FPATH = './info.yml'

# open the yml file
with open(CONFIG_FPATH) as f:
     dictionary = yaml.safe_load(f)

# print elements in dictionary
for key, value in dictionary.items():
     print(key + " : " + str(value))
     print()


dictionary.get('home_path')
# '/work/dir'

dictionary.get('api').get('key')
# 'ddddddddd'
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.