본문 바로가기
코딩자료/프로그램

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

Published Date:2024. 4. 25.
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()



반응형