본문 바로가기
프로그래밍/Python

[Python] 9. Python의 "표준 라이브러리와 외부 패키지"

by iwbap 2024. 6. 18.
728x90

Python 학습: 표준 라이브러리와 외부 패키지

Python은 풍부한 표준 라이브러리와 외부 패키지를 통해 다양한 기능을 쉽게 구현할 수 있습니다. 이번 글에서는 표준 라이브러리와 외부 패키지 설치 및 사용에 대해 알아보겠습니다.


1. 표준 라이브러리: itertools, collections, functools, etc.

Python의 표준 라이브러리는 많은 유용한 모듈을 포함하고 있습니다. 그중에서도 itertools, collections, functools는 매우 유용하게 사용됩니다.

 

- itertools : itertools는 반복자(iterator)를 생성하는 함수들을 제공합니다. 이를 통해 효율적인 반복 작업을 수행할 수 있습니다.

 

itertools 예제

[python]
 
import itertools

# count: 무한히 증가하는 정수 생성
for i in itertools.count(10):
    if i > 15:
        break
    print(i)  # 10, 11, 12, 13, 14, 15 출력

# cycle: 반복 가능한 객체를 무한히 반복
count = 0
for item in itertools.cycle(['A', 'B', 'C']):
    if count > 5:
        break
    print(item)  # A, B, C, A, B, C 출력
    count += 1

# combinations: 주어진 길이의 모든 조합 생성
items = ['a', 'b', 'c']
print(list(itertools.combinations(items, 2)))  # [('a', 'b'), ('a', 'c'), ('b', 'c')]
 
 

- collections : collections 모듈은 컨테이너 데이터형을 확장한 다양한 자료구조를 제공합니다.

 

collections 예제

[python]
 
from collections import Counter, deque, defaultdict, namedtuple

# Counter: 요소의 개수를 세는 딕셔너리
counter = Counter(['a', 'b', 'c', 'a', 'b', 'b'])
print(counter)  # Counter({'b': 3, 'a': 2, 'c': 1})

# deque: 양쪽 끝에서 빠르게 추가 및 제거할 수 있는 리스트
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq)  # deque([0, 1, 2, 3, 4])

# defaultdict: 기본값을 제공하는 딕셔너리
dd = defaultdict(int)
dd['a'] += 1
print(dd)  # defaultdict(<class 'int'>, {'a': 1})

# namedtuple: 이름으로 접근 가능한 튜플
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x, p.y)  # 10 20
 
 

- functools : functools 모듈은 고차 함수(higher-order functions)를 다루기 위한 도구를 제공합니다.

 

functools 예제

[python]
 
from functools import reduce, lru_cache, partial

# reduce: 누적 함수 적용
numbers = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, numbers)
print(result)  # 15

# lru_cache: 캐싱을 통한 함수 성능 향상
@lru_cache(maxsize=32)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(10))  # 55

# partial: 함수의 인자 고정
def power(base, exponent):
    return base ** exponent

square = partial(power, exponent=2)
print(square(5))  # 25

2. 외부 패키지 설치 및 사용: pip, venv, numpy, pandas, matplotlib 등

Python의 생태계는 외부 패키지로 더욱 확장됩니다. pip와 venv를 사용하여 패키지를 관리하고, numpy, pandas, matplotlib와 같은 외부 라이브러리를 사용하여 다양한 기능을 구현할 수 있습니다.

 

- pip : pip는 Python 패키지 설치를 위한 패키지 관리자입니다.

 

pip 사용 예제

[sh]
 
# 패키지 설치
pip install requests

# 패키지 목록 확인
pip list

# 패키지 제거
pip uninstall requests
 
 

- venv : venv는 가상 환경을 만들어 프로젝트별로 독립된 패키지 환경을 구성할 수 있습니다.

 

venv 사용 예제

[sh]
 
# 가상 환경 생성
python -m venv myenv

# 가상 환경 활성화 (Windows)
myenv\Scripts\activate

# 가상 환경 활성화 (macOS/Linux)
source myenv/bin/activate

# 가상 환경 비활성화
deactivate
 
 

- numpy : numpy는 강력한 수치 계산 라이브러리로, 배열 연산을 효율적으로 처리합니다.

 

numpy 사용 예제

[python]
 
import numpy as np

# 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr)

# 배열 연산
print(arr + 5)  # [ 6  7  8  9 10]
print(np.sum(arr))  # 15

# 다차원 배열
matrix = np.array([[1, 2], [3, 4]])
print(matrix)
 
 

- pandas : pandas는 데이터 조작 및 분석을 위한 라이브러리로, 데이터프레임(DataFrame)을 사용하여 데이터를 처리합니다.

 

pandas 사용 예제:

[python]
 
import pandas as pd

# 데이터프레임 생성
data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
}
df = pd.DataFrame(data)
print(df)

# 데이터 접근
print(df['name'])
print(df.iloc[0])

# 데이터 조작
df['age'] += 1
print(df)
 
 

- matplotlib : matplotlib는 데이터 시각화를 위한 라이브러리로, 다양한 형태의 그래프를 그릴 수 있습니다.

 

matplotlib 사용 예제

[python]
 
import matplotlib.pyplot as plt

# 데이터 준비
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 라인 그래프 그리기
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Line Graph')
plt.show()

# 막대 그래프 그리기
plt.bar(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Bar Chart')
plt.show()

이 글에서는 Python의 표준 라이브러리와 외부 패키지에 대해 알아보았습니다. itertools, collections, functools 등의 표준 라이브러리와 numpy, pandas, matplotlib 같은 외부 패키지를 활용하면 다양한 기능을 쉽게 구현할 수 있습니다. Happy Coding!

728x90