본문 바로가기

😀 기초/파이썬(Python)

2장 파이썬 기초문법(2.13 ~ 2.15)

2.13 파이썬 패키지 사용하기

 

1. 패키지 임포트
- 패키지가 설치되어 있다고 바로 사용할 수 없다
- 패키지를 사용하려면 설정하는 명령을 실행
- import 패키지이름

- 이때 주의할 점은 임포트할 때 사용하는 패키지 이름은 일반적으로 부르는 패키지 이름과 다를 수 있다.
- 예를 들어 Scikit-Learn 패키지는 sklearn이라는 이름으로 임포트해야함.

- 패키지 이름은 추후 패키지 안의 함수들을 사용할 때 계속 쓰인다.
- 그래서 패키지 이름이 너무 길면 import 패키지이름 as패키지별명
- 예를들면 import sklearn as sk

 

2. 패키지 내용 살펴보기 
임포트된 패키지 안의 내용을 살펴보려면 다음 명령을 사용한다.

 

# dir(패키지이름 도는 패키지별명)

dir(sk)

['__SKLEARN_SETUP__',
 '__all__',
 '__builtins__',
 '__cached__',
 '__check_build',
 '__doc__',
 .
 .
 .
 .

- 대부분의 패키지는 그 안에 하위 패키지를 가지고 있다.
- 이러한 하위 패키지 중에는 상위 패키지를 임포트할 때 자동으로 임포트되는 것도 있지만 그렇지 않는 것도 있음.
- 자동 임포트되지 않는 하위 패키지는 다음처럼 수동 임포트 해야 함.

import sklearn.preprocessing
dir(sklearn.preprocessing)

['Binarizer',
 'FunctionTransformer',
 'KBinsDiscretizer',
 'KernelCenterer',
 'LabelBinarizer',
 'LabelEncoder',
 'MaxAbsScaler',
 .
 .
 .
 ..

3. 패키지에 포홤된 함수 등을 사용하기

- 패키지에 포함된 함수 등을 사용할 때는 앞에 패키지 이름(import ~ as ~ 명령을 사용할 경우네는 패키지 별명)과 마침과(.)을 붙인 후 사용해야 한다.
- IPyhton이나 Jupyter 등을 사용할 때는 마침표까지만 입력하고 탭(TAB)키를 느르면 자동 완성 기능을 지원한다.

import numpy as np
np.arange(10)

# 결과 :
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

4. 선택적 임포트
- 패키지를 임포트할 때 다음과 같이 특정한 명령어들만 선택적으로 임포트할 수 있다.

from 패키지이름 import 명령어

또는

from 패키지이름 import 명령어1, 명령어2, 명령어3

- 선택적으로 임포트했을 때는 패키지 이름과 마침표 없이 바로 명령어를 사용할 수 있다.

from numpy import arange
arange(10)

# 결과 :
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

- 패키지 안의 모든 명령을 선택적 임포트할 때는 명령어 이름 대신 * 기호를 사용하는데 이를 와일드 임포드(wild import)라고 한다.
- 와일드 임포트할 때는 뜻하지 않게 기존의 변수나 함수를 덮어 쓸 때가 있을 수 있으므로 특별한 상황이 아니면 사용하지 말아야 한다.   
    
- 예를 들어 f라는 이름의 함수를 정의한 후에 SciPㅛ 패키지의 stats 서브패키지를 와일드 임포트하면 F 분포를 나타내는 f 명령이 새롭게 임포트되면서 기존의 함수를 없애버릴 수 있다.

def f():
    print("I am f function!")
    
f()
# 결과 : I am f function!

from scipy.stats import *
f()

# 오류 발생

2.14 파이썬의 자료형

 

1. 자료형
- 지금까지 우리는 변수에 숫자, 문자열, 리스트 등 값을 마음대로 넣어서 사용
 - 그러나 프로그램이 실행되려면 컴퓨터는 각 변수에 어떤 종류의 값이 들어가 있는지 알아야 함.
 - 값이 숫지인가 문자열인가 등에 따라 값을 저장하는 방식이나 계산하는 방법이 다르기 떄문이다.
 - 이러한 값의 종류를 자료형(data type) 혹은 타입(type)이라고 함.
 - 예를 들어 정수인 1인 문자열인 "1"이 컴퓨터에 저장될 때 어느정도의 메모리를 차지하는지 알아보면 두 값의 저장 방식이 다르다는 것을 알 수 있다.
 
 - 파이썬에서 변수의 메모리 크기를 알기 위해서는 sys패키지의 getsizeof 명령

from sys import getsizeof

a = 1
getsizeof(a)

# 결과 : 28

b = "1"
getsizeof(b)

# 결과 : 50

2. 파이썬의 자료형

- NoneType
- bool
- int
- float
- complex
- str
- tuple
- list
- dict
- function

# 변수나 값의 잘형을 알아보려면 type 명령을 사용하면된다.
# None 타입은 변수가 비어있음을 표시할 때 사용

type(None)
type(True)
type(1)

# 결과 : int

# 함수도 독자적인 자료형을 가진다.
def f():
    return 1

type(f)

# 결과 : function

3. 자료형과 클래스
- 파이썬에서 자료형과 클래스는 같은 의미라고 봐도 무방하다.
- 클래스를 알고 싶으면 __class__ 속성을 살펴본다.

a = 1
type(a)
# 결과 : int

a.__class__
# 결과: int

b = [1, 2, 3]

type(b)

#결과 : list

b.__class__

# 결과 : list

4. 자료형 변환

str(20201012)

#결과 : '20201012'

int("20201012")

#결과 : 20201012

5. 👀 불변형 자료형과 변형 자료형

- 파이썬 자료형에는 불변형(immutable)자료형과 변형(mutable) 자료형이 있다
정수, 실수, 문자열, 튜플은 불변형 자료형이다.
리스트, 딕셔너리는 변형 자료형이다.
- 불변형 자료형은 데이터 값을 바꿀 때 메모리에 저장된 데이터 전체를 모두 없애고 새로 만들지만
- 변형 자료형은 할당된 메모리를 그냥 놔두고 메모리에 씌여있는 내용(값)만 바꾼다.


😂 2.15 파이썬에서 날짜와 시간 다루기

 

1. 파이썬에서 날짜와 시간 다루기
- 날짜와 시간은 파이썬에서 기본으로 제공하는 자료형에는 포함되어 있지 않지만 

  데이터 분석에 있어 빠질 수 없는 중요한 자료형
- 여기에서는 날짜와 시간을 다루기 위한 패키지를 소개
- 날짜 및 시간과 관련된 기능을 제공하는 패키지는 다음과 같은 것들이 있다.
- datetime: https://docs.python.org/3/library/datetime.html
- dateutil: http://dateutil.readthedocs.org/en/latest/index.html
- time: https://docs.python.org/3/library/time.html

 

2. datetime 패키지
- datetime 패키지에서는 
- 날짜와 시간을 함께 저장하는 datetime 클래스
- 날짜만 저장하는 date 클래스
- 시간만 저장하는 time 클래스
- 시간 구간 정보를 저장하는 timedelta 클래스 등 제공

# 먼저 datetime 패키지를 다음과 같이 임포트한다.

import datetime as dt

3. datetime 클래스
- 우선 datetime 클래스부터 알아보자
- 패키지 이름과 클래스 이름이 datetime으로 같기 떄문에 사용할 때 주의!
- 또한 다른 크래스와 달리 클래스 이름이 대문자로 시작하지 않는다!!
- datetime 클래스에는 객체를 생성하지 않고도 바로 클래스에서 사용할 수 있는 클래스 메서드라는 것을 제공한다.
- 가장 대표적인 것이 현재 시각을 출력하는 now()메서드이다.

x = dt.datetime.now()
x

# dt(datetime 패키지의 datetime 클래스의 now 메서드 사용)

x = dt.datetime.now()
x

#결과 : 
datetime.datetime(2022, 1, 24, 14, 46, 26, 493385)

- now 클래스 메서드는 컴퓨터 현재 시각을 datetime 클래스 객체로 만들어 반환한다.
- datetime 클래스 객체는 다음과 같은 속성을 가진다.
- year: 연도
- month : 월
- day : 일
- hour : 시
- minute : 분
- second : 초
- microsecond : 마이크로초

x.year, x.month, x.day, x.hour, x.minute, x.second, x.microsecond

# 결과 : 
(2022, 1, 24, 14, 46, 26, 493385)

- 다음과 같은 메서드도 제공
- weekday : 요일 반환 (0:월, 1:화 .... 6:일)
- strftime : 문자열 반환
- date : 날짜 정보만 가지는 date 클래스 객체 반환
- time : 시간 정보만 가지는 time 클래스 객체 반환

x.weekday()
# {0:월, 1:화 ... 6:일}

결과 : 0

- 이 중 특히 많이 사용되는 것이 날짜와 시간 정보를 문자열로 바꿔주는 strftime 메서드이다.
- 이 메서드는 어떤 형식으로 문자열을 만들지 결정하는 형식 문자열을 인수로 받는다.
- 형식 문자열은 날짜 및 시간 지정 문자열을 포함한다.
- 다음은 많이 사용되는 날짜 및 지정 문자열이다.