본문 바로가기
코딩자료/프로그램 Published Date: 2024. 4. 25.

파이썬 라이브러리 종류와 사용법

by NanDA arhat
openipc.kr

파이썬 라이브러리

라이브러리는 프로그래밍에서 재사용 가능한 코드의 집합을 말합니다. 일반적으로 라이브러리는 특정 기능을 수행하기 위한 함수, 클래스, 상수 등을 포함하고 있으며, 이러한 요소들은 다른 프로그램에서 가져와서 사용할 수 있습니다. 라이브러리는 개발자들이 특정 작업을 쉽게 수행할 수 있도록 도와주며, 반복적이고 일반적인 작업을 처리하는 데 도움이 됩니다



파이썬 라이브러리 사용방법

라이브러리를 파이썬에서 사용하는 방법은 크게 두 가지입니다: import 문을 사용하여 전체 모듈을 가져오는 방법과 from import 문을 사용하여 특정 요소만 가져오는 방법이 있습니다. import와 from import는 둘 다 파이썬에서 모듈을 가져오는 데 사용되지만, 약간의 차이가 있습니다.import: import 문은 전체 모듈을 가져옵니다.



  • import numpy는 numpy 모듈 전체를 가져옵니다. 이 경우에는 모듈의 이름을 사용하여 모듈 내부의 요소에 접근해야 합니다. 예를 들어, numpy.array()는 numpy 모듈의 array 함수를 호출합니다.
  • from import: from import 문은 특정 요소만 가져옵니다. 예를 들어, from numpy import array는 numpy 모듈에서 array 함수만 가져옵니다. 이 경우에는 모듈 이름을 지정하지 않고 바로 가져온 요소를 사용할 수 있습니다. 따라서 array()를 호출하여 numpy.array()와 동일한 작업을 수행할 수 있습니다.

예시

# 전체 모듈을 가져오는 import 문 사용 예제

# numpy 라이브러리를 가져옵니다.
import numpy

# numpy 모듈의 array 함수를 사용하여 배열을 생성합니다.
# 이때는 numpy 모듈의 이름을 사용하여 array 함수에 접근합니다.
arr1 = numpy.array([1, 2, 3])

# ------------------------------------------

# 특정 요소만 가져오는 from import 문 사용 예제

# numpy 라이브러리에서 array 함수만 가져옵니다.
from numpy import array

# array 함수를 사용하여 배열을 생성합니다.
# 이때는 numpy 모듈의 이름을 사용하지 않고 직접 array 함수에 접근합니다.
arr2 = array([4, 5, 6])

# ------------------------------------------

# 위 두 가지 방법으로 생성된 배열들을 출력합니다.
print("arr1:", arr1)
print("arr2:", arr2)


 예시

# 전체 모듈을 가져오는 import 문 사용 예제

# numpy 라이브러리를 가져옵니다.
import numpy

# numpy 모듈의 array 함수를 사용하여 배열을 생성합니다.
# 이때는 numpy 모듈의 이름을 사용하여 array 함수에 접근합니다.
arr1 = numpy.array([1, 2, 3])

# ------------------------------------------

# 특정 요소만 가져오는 from import 문 사용 예제

# numpy 라이브러리에서 array 함수만 가져옵니다.
from numpy import array

# array 함수를 사용하여 배열을 생성합니다.
# 이때는 numpy 모듈의 이름을 사용하지 않고 직접 array 함수에 접근합니다.
arr2 = array([4, 5, 6])

# ------------------------------------------

# 위 두 가지 방법으로 생성된 배열들을 출력합니다.
print("arr1:", arr1)
print("arr2:", arr2)


파이썬 라이브러리 종류

파이썬에서 사용할 수 있는 다양한 라이브러리가 있습니다

NumPy, Pandas ,Matplotlib, Scikit-learn, TensorFlow, PyTorch, Requests, Beautiful, Soup, Django, Flask ,SQLAlchemy, Tkinter


  • NumPy: 수치 계산을 위한 핵심 라이브러리로, 배열(array)이나 행렬(matrix)과 같은 다차원 데이터를 효율적으로 다룰 수 있습니다.
  • Pandas: 데이터 조작 및 분석을 위한 라이브러리로, 데이터를 구조화하고 처리하며, 다양한 형태의 데이터를 다룰 수 있습니다.
  • Matplotlib: 데이터 시각화를 위한 라이브러리로, 다양한 그래프와 차트를 생성하여 데이터를 시각적으로 표현할 수 있습니다.
  • Scikit-learn: 기계 학습 알고리즘을 포함한 머신러닝 라이브러리로, 다양한 기계 학습 모델을 쉽게 사용하고 평가할 수 있습니다.
  • TensorFlow / PyTorch: 딥러닝 프레임워크로, 신경망 모델을 구축하고 학습시키는 데 사용됩니다.
  • Requests: HTTP 요청을 보내고 받는 데 사용되는 간단한 HTTP 라이브러리입니다.
  • Beautiful Soup: 웹 스크래핑을 위한 라이브러리로, HTML 및 XML 문서를 파싱하고 원하는 정보를 추출하는 데 사용됩니다.
  • Django / Flask: 웹 애플리케이션 개발을 위한 웹 프레임워크로, 웹 애플리케이션을 구축하고 관리하는 데 사용됩니다.
  • SQLAlchemy: 데이터베이스 관리 및 ORM(Object-Relational Mapping)을 위한 라이브러리로, 데이터베이스와 상호작용하는 데 사용됩니다.
  • Tkinter: 파이썬의 표준 GUI 라이브러리로, 간단한 GUI 애플리케이션을 개발하는 데 사용됩니다.

NumPy 라이브러리


 예시

import numpy as np  # NumPy 라이브러리를 가져옵니다.

# 1부터 10까지의 정수로 이루어진 NumPy 배열을 생성합니다.
print("1부터 10까지의 정수로 이루어진 NumPy 배열 생성:")
array = np.arange(1, 11)
print(array)

# 배열의 합계와 평균을 계산합니다.
print("\n배열의 합계와 평균 계산:")
total = np.sum(array)  # 배열의 합계를 계산합니다.
mean = np.mean(array)  # 배열의 평균을 계산합니다.
print("합계:", total)
print("평균:", mean)

# 배열의 제곱 값을 계산합니다.
print("\n배열의 제곱 값 계산:")
squared_array = np.square(array)  # 배열의 각 요소를 제곱합니다.
print(squared_array)

# 배열 요소 중 최댓값과 최솟값을 찾습니다.
print("\n배열의 최댓값과 최솟값 찾기:")
max_value = np.max(array)  # 배열의 최댓값을 찾습니다.
min_value = np.min(array)  # 배열의 최솟값을 찾습니다.
print("최댓값:", max_value)
print("최솟값:", min_value)

Pandas 라이브러리


 예시

import pandas as pd  # Pandas 라이브러리를 가져옵니다.

# 데이터프레임을 생성합니다.
data = {
    '이름': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
    '나이': [25, 30, 35, 40, 45],
    '성별': ['여', '남', '남', '여', '여']
}
df = pd.DataFrame(data)

# 데이터프레임을 출력합니다.
print("데이터프레임 출력:")
print(df)

# 데이터프레임의 정보를 출력합니다.
print("\n데이터프레임 정보:")
print(df.info())

# 데이터프레임의 첫 몇 개 행을 출력합니다.
print("\n첫 2개의 행 출력:")
print(df.head(2))

# 데이터프레임의 열을 선택하여 출력합니다.
print("\n'이름' 열 선택:")
print(df['이름'])

# 데이터프레임의 행을 선택하여 출력합니다.
print("\n첫 번째 행 선택:")
print(df.loc[0])

# 데이터프레임에 새로운 열 추가하기
df['직업'] = ['학생', '개발자', '디자이너', '매니저', '연구원']
print("\n'직업' 열 추가 후 출력:")
print(df)


Matplotlib 라이브러리


 예시

import matplotlib.pyplot as plt  # Matplotlib 라이브러리를 가져옵니다.

# 데이터 생성
x = [1, 2, 3, 4, 5]  # x 값
y = [2, 3, 5, 7, 11]  # y 값

# 선 그래프(라인 플롯) 그리기
plt.plot(x, y, marker='o', color='blue', linestyle='-')  # 선 그래프를 그립니다.
plt.title('간단한 선 그래프')  # 그래프 제목을 설정합니다.
plt.xlabel('X 축')  # x 축 라벨을 설정합니다.
plt.ylabel('Y 축')  # y 축 라벨을 설정합니다.

# 그래프 표시
plt.grid(True)  # 그리드를 표시합니다.
plt.show()  # 그래프를 화면에 출력합니다.


Scikit-learn 라이브러리


 예시

from sklearn import datasets  # Scikit-learn 라이브러리에서 데이터셋을 가져옵니다.
from sklearn.model_selection import train_test_split  # 데이터를 훈련 세트와 테스트 세트로 나누는 함수를 가져옵니다.
from sklearn.tree import DecisionTreeClassifier  # 의사 결정 트리 분류기를 가져옵니다.
from sklearn.metrics import accuracy_score  # 정확도를 계산하기 위한 함수를 가져옵니다.

# 데이터셋을 로드합니다.
iris = datasets.load_iris()
X = iris.data  # 특성(features) 데이터를 가져옵니다.
y = iris.target  # 타겟(target) 데이터를 가져옵니다.

# 데이터를 훈련 세트와 테스트 세트로 나눕니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 의사 결정 트리 분류기를 초기화합니다.
clf = DecisionTreeClassifier()

# 분류기를 훈련 세트에 학습시킵니다.
clf.fit(X_train, y_train)

# 테스트 세트로 예측을 수행합니다.
y_pred = clf.predict(X_test)

# 정확도를 계산하여 출력합니다.
accuracy = accuracy_score(y_test, y_pred)
print("정확도:", accuracy)


TensorFlow / PyTorch 라이브러리


 예시

import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

# 데이터셋 생성
X_train = tf.constant([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=tf.float32)  # 입력 데이터
y_train = tf.constant([[0], [1], [1], [0]], dtype=tf.float32)  # 출력 데이터

# Sequential 모델 생성
model = Sequential([
    Dense(2, input_shape=(2,), activation='relu'),  # 입력 레이어
    Dense(1, activation='sigmoid')  # 출력 레이어
])

# 모델 컴파일
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 모델 학습
model.fit(X_train, y_train, epochs=1000, verbose=0)

# 모델 평가
loss, accuracy = model.evaluate(X_train, y_train)
print("정확도:", accuracy)


 예시


import torch  # PyTorch 라이브러리를 가져옵니다.
import torch.nn as nn  # 신경망 모델을 만들기 위한 모듈을 가져옵니다.

# 데이터셋 생성
X_train = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=torch.float32)  # 입력 데이터
y_train = torch.tensor([[0], [1], [1], [0]], dtype=torch.float32)  # 출력 데이터

# 신경망 모델 정의
model = nn.Sequential(
    nn.Linear(2, 2),  # 입력 레이어
    nn.ReLU(),  # 활성화 함수
    nn.Linear(2, 1),  # 출력 레이어
    nn.Sigmoid()  # 활성화 함수
)

# 손실 함수와 옵티마이저 정의
criterion = nn.BCELoss()
optimizer = torch.optim.Adam(model.parameters())

# 모델 학습
for epoch in range(1000):
    # 순전파
    outputs = model(X_train)
    loss = criterion(outputs, y_train)
    
    # 역전파와 최적화
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

# 모델 평가
with torch.no_grad():
    outputs = model(X_train)
    predicted = (outputs > 0.5).float()
    accuracy = (predicted == y_train).float().mean()
    print("정확도:", accuracy.item())


Requests 라이브러리



import requests  # Requests 라이브러리를 가져옵니다.

# GET 요청 보내기
response = requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")

# 응답 상태코드 확인
if response.status_code == 200:
    print("요청이 성공했습니다.")
    # JSON 형식으로 응답 내용을 디코딩하여 출력합니다.
    print("응답 내용:")
    print(response.json())
else:
    print("요청이 실패했습니다. 상태 코드:", response.status_code)

 

Beautiful Soup 라이브러리


 예시

from bs4 import BeautifulSoup  # Beautiful Soup 라이브러리를 가져옵니다.
import requests  # Requests 라이브러리를 가져옵니다.

# 웹 페이지에 GET 요청을 보내고 응답을 받습니다.
response = requests.get("https://en.wikipedia.org/wiki/Main_Page")

# 응답이 성공적인지 확인합니다.
if response.status_code == 200:
    print("요청이 성공했습니다.")
    
    # BeautifulSoup 객체를 생성합니다. HTML 파서를 지정합니다.
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 웹 페이지에서 원하는 정보를 추출합니다.
    # 예제: 위키피디아 메인 페이지의 제목을 가져옵니다.
    title = soup.title
    print("제목:", title.text)
    
    # 다른 정보 추출 예제:
    # 페이지에서 모든 링크를 가져와 출력합니다.
    # for link in soup.find_all('a'):
    #     print(link.get('href'))
    
else:
    print("요청이 실패했습니다. 상태 코드:", response.status_code)


Django / Flask 라이브러리


 예시

# mysite/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("안녕하세요. Django 웹 애플리케이션입니다.")
    # mysite/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
# mysite/settings.py

INSTALLED_APPS = [
    # 기타 앱들...
    'mysite',
]

ROOT_URLCONF = 'mysite.urls'
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return '안녕하세요. Flask 웹 애플리케이션입니다.'

if __name__ == '__main__':
    app.run(debug=True)


SQLAlchemy 라이브러리


 예시

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 데이터베이스 연결 엔진 생성
engine = create_engine('sqlite:///example.db', echo=True)

# 기본 선언
Base = declarative_base()

# 데이터베이스 테이블 모델 정의
class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

    def __repr__(self):
        return f"<User(name='{self.name}', age={self.age})>"

# 테이블 생성
Base.metadata.create_all(engine)

# 세션 생성
Session = sessionmaker(bind=engine)
session = Session()

# 데이터 추가
user1 = User(name='Alice', age=30)
user2 = User(name='Bob', age=25)
session.add(user1)
session.add(user2)
session.commit()

# 데이터 조회
users = session.query(User).all()
for user in users:
    print(user)

# 세션 종료
session.close()


Tkinter 라이브러리


 예시

import tkinter as tk

def greet():
    name = entry.get()
    label.config(text=f"안녕하세요, {name}님!")

# Tkinter 윈도우 생성
root = tk.Tk()
root.title("인사 프로그램")

# 레이블 추가
label = tk.Label(root, text="이름을 입력하세요:")
label.pack()

# 텍스트 입력 상자 추가
entry = tk.Entry(root)
entry.pack()

# 버튼 추가
button = tk.Button(root, text="인사", command=greet)
button.pack()

# 윈도우 실행
root.mainloop()