๋ฐ˜์‘ํ˜•

๐ŸŽˆ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (External Libraries)

Python์˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋‚˜ ํŠน์ • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€๋กœ, ๊ธฐ๋ณธ ์„ค์น˜๋œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„, ์›น ์Šคํฌ๋ž˜ํ•‘, HTTP ์š”์ฒญ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ์œ ์šฉํ•˜๋ฉฐ, pip ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.์„ค์น˜ ํ›„, import ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1. pandas

๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

pandas๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ ์กฐ์ž‘์— ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ์— ํŽธ๋ฆฌํ•˜๋‹ค. ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„(DataFrame)์ด๋ผ๋Š” ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํ–‰๊ณผ ์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์„ค์น˜ ๋ช…๋ น์–ด: pip install pandas
import pandas as pd

# ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ƒ์„ฑ
data = {'Name': ['Karina', 'Winter', 'Ningning', 'Giselle'], 'Age': [24, 23, 21, 23]}
df = pd.DataFrame(data)
print(df)

# ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํŠน์ • ์—ด ์ถœ๋ ฅ
print(df['Name'])  # Output: Name ์—ด์˜ ๊ฐ’

# ๊ธฐ์ดˆ ํ†ต๊ณ„ ์ •๋ณด ์ถœ๋ ฅ
print(df.describe())  # ๋ฐ์ดํ„ฐ์˜ ํ†ต๊ณ„ ์š”์•ฝ ์ •๋ณด

# DataFrame์„ Excel ํŒŒ์ผ๋กœ ์ €์žฅ
df.to_excel('aespa_data.xlsx', index=False)
  • to_excel() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DataFrame์„ Excel ํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.( openpyxl ๋˜๋Š” xlsxwriter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜)
  • ์„ค์น˜ ๋ช…๋ น์–ด: pip install openpyxl
  •  index=False: ์ด ์˜ต์…˜์€ DataFrame์˜ ์ธ๋ฑ์Šค๋ฅผ ํŒŒ์ผ์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋„๋ก ์„ค์ •ํ•œ๋‹ค. ๋งŒ์•ฝ ์ธ๋ฑ์Šค๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด index=True๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ์˜ต์…˜์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

โญ ํ„ฐ๋ฏธ๋„ ์ถœ๋ ฅ ๊ฒฐ๊ณผ

2. requests

HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. 

HTTP ์š”์ฒญ์„ ์‰ฝ๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์›น API๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ์›น ํŽ˜์ด์ง€์˜ HTML์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

  • ์„ค์น˜ ๋ช…๋ น์–ด: pip install requests

โœ… GET ์š”์ฒญ 

import requests

response = requests.get("https://api.github.com")
print(response.status_code)   # ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ ์ถœ๋ ฅ
print(response.json())        # JSON ํ˜•์‹์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

 

 

  • requests.get()๋Š” GET ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ.
  • https://api.github.com์€ GitHub์˜ API ์—”๋“œํฌ์ธํŠธ๋กœ, ๊ธฐ๋ณธ์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • response.status_code: HTTP ์ƒํƒœ ์ฝ”๋“œ ์ถœ๋ ฅ. 200์€ ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
  • response.json(): JSON ํ˜•์‹์œผ๋กœ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

โœ… POST ์š”์ฒญ 

import requests

data = {'key': 'value'}
response = requests.post("https://httpbin.org/post", data=data)
print(response.json())        # JSON ํ˜•์‹์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

 

 

  • requests.post(): POST ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฉ”์„œ๋“œ๋กœ, ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•จ.
  • data=data: ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ์ฝ”๋“œ์—์„œ๋Š” {'key': 'value'}๋ผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ์ „์†ก.
  • https://httpbin.org/post: httpbin.org๋Š” ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค๋กœ, ์š”์ฒญ์„ ๊ทธ๋Œ€๋กœ ๋˜๋Œ๋ ค์ค€๋‹ค.
  • response.json(): JSON ํ˜•์‹์œผ๋กœ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

3. tqdm

๋ฐ˜๋ณต ์ž‘์—…์˜ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

  • ์„ค์น˜ ๋ช…๋ น์–ด: pip install tqdm

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, 10๋ฒˆ์˜ ๋ฐ˜๋ณต ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ๊ฐ ์ž‘์—… ์‚ฌ์ด์— 0.1์ดˆ์”ฉ ์ง€์—ฐ๋˜๋ฉฐ ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”๊ฐ€ ์กฐ๊ธˆ์”ฉ ์ฑ„์›Œ์ง€๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

from tqdm import tqdm
import time

# tqdm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต ์ž‘์—…์— ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ” ์ ์šฉ
for i in tqdm(range(10)):
    time.sleep(0.1)  # ์ž‘์—…์„ ์ง€์—ฐ์‹œ์ผœ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
  • for i in tqdm(range(10)): range(10)์€ 0๋ถ€ํ„ฐ 9๊นŒ์ง€ 10๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฃจํ”„๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, tqdm์„ ํ†ตํ•ด ๊ฐ ๋ฐ˜๋ณต์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.
  • time.sleep(0.1): ๊ฐ ๋ฐ˜๋ณต ์‚ฌ์ด์— 0.1์ดˆ์˜ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ์ง€์—ฐ์ด ์—†์œผ๋ฉด ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”๊ฐ€ ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์ง€๋‚˜๊ฐ€, ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

4. numpy

๋ฐฐ์—ด ๋ฐ ํ–‰๋ ฌ ์—ฐ์‚ฐ์— ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ ๊ณผํ•™ ๊ณ„์‚ฐ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

  • ์„ค์น˜ ๋ช…๋ น์–ด: pip install numpy
import numpy as np

# ๋ฐฐ์—ด ์ƒ์„ฑ ๋ฐ ์—ฐ์‚ฐ
array = np.array([1, 2, 3, 4])
print(array * 2)  # Output: [2 4 6 8]

# 2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ
matrix = np.array([[1, 2], [3, 4]])
print(matrix)

5. matplotlib

๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๊ทธ๋ž˜ํ”„์™€ ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.

  • ์„ค์น˜ ๋ช…๋ น์–ด: pip install matplotlib
import matplotlib.pyplot as plt

# ๊ฐ„๋‹จํ•œ ๋ผ์ธ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Simple Line Plot')
plt.show()
๋ฐ˜์‘ํ˜•

+ Recent posts