Pythonのライブラリとは?標準ライブラリと外部ライブラリの違いをわかりやすく説明

Pythonの大きな強みの1つは、豊富なライブラリが利用できることです。インストール時から使える標準ライブラリは基本的な機能を、必要に応じて追加できる外部ライブラリは専門的な機能を提供し、開発効率を大きく向上させます。
本記事では、ライブラリの基礎知識から実践的な使い方まで、具体的なコード例を交えて詳しく解説します。初心者からベテランまで、より効率的な開発のためのヒントが得られる内容となっています。
Contents
Pythonのライブラリについて
Pythonのライブラリは、特定の機能を持つコードの集まりで、開発者はすべてを一から実装する必要がなくなります。
「標準ライブラリ」と「外部ライブラリ」があり、標準ライブラリはPythonインストール時に利用可能で、外部ライブラリは別途インストールが必要です。
使用するにはimport文を使います。
# 数学関連のライブラリを使用する
import math
# 特定の機能だけを使用したいとき
from math import sqrt
Pythonの標準ライブラリ
Pythonには標準で200以上のモジュールが付属します。
本項ではよく使われるものをご紹介します。
OS関連(os, sys)
osは、ディレクトリ作成や削除、ファイルパスの操作などを提供します。
import os
os.mkdir(“new_folder”) # ディレクトリ作成
current_dir = os.getcwd() # 現在の作業ディレクトリ
# 新規ディレクトリ内のファイルパスを求める
file_path = os.path.join(current_dir, “new_folder”, “file.txt”)
print(file_path)
sysは、Pythonインタープリタと直接やり取りするための機能を提供します。
import sys
# コマンドライン引数を取得
args = sys.argv
# Pythonのバージョン情報
version = sys.version
# 標準エラー出力
print(“エラーです”, file=sys.stderr)
数学・統計(math, random, statistics)
mathは基本的な数学関数や定数を提供します。
import math
pi_value = math.pi # 円周率π
print(math.sqrt(2)) # 2の平方根
randomは乱数生成に関する機能があります。
import random
rand_float = random.random() # 0以上1未満の乱数
# リストから無作為に1つ選ぶ
choices = random.choice([“りんご”, “バナナ”, “オレンジ”])
statisticsは、基本的な統計処理に役立ちます。
import statistics
data = [1, 2, 30, 40, 600]
mean = statistics.mean(data)
median = statistics.median(data)
print(f’平均{mean} 中央値{median}‘) # 平均134.6 中央値30
日時関連(datetime)
日付と時刻の計算や変換を扱います。
from datetime import datetime, timedelta
now = datetime.now() # 現在の日時
# 書式指定して文字列に変換
formatted_date = now.strftime(“%Y年%m月%d日”)
# 3日後の日付を計算
three_days_later = now + timedelta(days=3)
# 日付の差分を計算
birthday = datetime(1990, 1, 1)
age_days = (now – birthday).days # 誕生日から何日
世界中のタイムゾーンを扱う場合、Python 3.9以降ではzoneinfoを使用できます。
from datetime import datetime
from zoneinfo import ZoneInfo
# タイムゾーンを指定して作成
paris_time = datetime.now(ZoneInfo(“Europe/Paris”))
print(f”Paris time: {paris_time}“)
# タイムゾーン変換(パリ → ロサンゼルス)
la_time = paris_time.astimezone(ZoneInfo(“America/Los_Angeles”))
print(f”LA time: {la_time}“)
JSON処理関連(json)
JSONデータとPythonオブジェクトの相互変換をおこなえます。
import json
# PythonオブジェクトをJSON文字列に変換(シリアライズ)
data = {“name”: “田中”, “age”: 30, “skills”: [“Python”, “GCP”]}
json_str = json.dumps(data, ensure_ascii=False) # 非ASCII文字をそのまま表記
print(json_str) # {“name”: “田中”, “age”: 30, “skills”: [“Python”, “GCP”]}
# JSON文字列をPythonオブジェクトに変換(デシリアライズ)
decoded_data = json.loads(json_str)
# dataをJSONファイルへ出力
with open(“data.json”, “w”, encoding=“utf-8”) as f:
json.dump(data, f, ensure_ascii=False)
# JSONファイルからloaded_dataへ読み込み
with open(“data.json”, “r”, encoding=“utf-8”) as f:
loaded_data = json.load(f)
JSONはWEB APIとの連携やデータの保存など、多くの場面で活用できます。
外部ライブラリ
現在10万種以上のライブラリがPython Package Index(PyPI)で公開され、pipを使ってインストールできます。
# 端末、コマンドプロンプトなどで入力
# 例:requestsを導入する場合
pip install requests
なお、venvなど仮想環境を作成すると、プロジェクト毎に異なる外部ライブラリを扱いやすくなります。
WEBスクレイピング
WEBから情報を収集するライブラリです。
# RequestsとBeautifulSoupで見出しを抽出する例
import requests
from bs4 import BeautifulSoup
# WEBページを取得
response = requests.get(‘https://example.com’)
# HTMLを解析
soup = BeautifulSoup(response.text, ‘html.parser’)
# 特定の要素を抽出(例:すべてのH1見出し)
headings = soup.find_all(‘h1’)
より高度なケースでは、ScrapyフレームワークやSeleniumも活躍します。
注意点として、対象サイトの利用規約や法律の遵守、対象サーバーへの負荷を避ける配慮が必要です。
WEBアプリ開発
Flaskなど、WEB開発に使用するライブラリも充実しています。
Djangoは認証システム、管理画面などが標準装備され、セキュリティも配慮されているため、企業で広く使われています。
# Flaskの例
from flask import Flask
app = Flask(__name__)
@app.route(‘/’)
def hello_world():
return ‘こんにちは、Flask!’
if __name__ == ‘__main__’:
app.run(debug=True)
また、WEB APIの開発にはFastAPIが便利で、高速な動作と自動APIドキュメント生成機能を備えています。
from fastapi import FastAPI
app = FastAPI()
@app.get(“/”)
async def root():
return {“message”: “こんにちは、アールストーン”}
データ解析
データ解析ライブラリは、大量データの効率的な分析に不可欠です。
NumPyは多次元配列の数値計算を高速処理し、Pandasはデータの絞り込みや集計、クリーニングができます。
import pandas as pd
# CSVファイルの読み込み
data = pd.read_csv(‘data.csv’)
data = data.fillna(0) # 欠損値の処理
# 集計
summary = data.groupby(‘category’).sum()
# Excelファイルとして保存
summary.to_excel(‘summary.xlsx’)
Matplotlibは基本的なグラフ作成、Seabornは統計的な可視化を簡単にします。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
data = {‘category’:[‘A’,‘B’,‘C’]*2, ‘value’:[10,15,7,12,9,11]}
df = pd.DataFrame(data)
# Matplotlibで棒グラフを作成
plt.figure(figsize=(8, 6))
plt.bar(df[‘category’], df[‘value’])
plt.show()
# Seabornで箱ひげ図を作成
sns.boxplot(x=‘category’, y=‘value’, data=df)
plt.show()
# Seabornで散布図と回帰線を表示
import numpy as np
np.random.seed(0)
num_points = 50
x = np.linspace(0, 10, num_points)
y = 2 * x + 1 + np.random.normal(scale=2, size=num_points)
sns.regplot(x=x, y=y) # 散布図と回帰線
plt.show()
機械学習
Pythonは機械学習・AIライブラリが豊富で、データから学習し、予測やレコメンデーションを実現できます。
# scikit-learnで分類モデル2つの精度を比較する
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
models = { # 対象モデル
“ロジスティック回帰”: LogisticRegression(max_iter=1000),
“ランダムフォレスト”: RandomForestClassifier()
}
# 学習データの準備
url = ‘https://github.com/pandas-dev/pandas/raw/refs/heads/main/doc/data/titanic.csv’
data = pd.read_csv(url)[[‘Survived’,‘Pclass’,‘Sex’,‘Age’,‘Fare’]].dropna()
X = data.drop(‘Survived’, axis=1).assign(Sex=lambda x: x.Sex.eq(‘male’))
y = data[‘Survived’]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=5)
# 各モデルの学習と評価
for n, m in models.items():
print(f”{n}の精度: {m.fit(X_train,y_train).score(X_test,y_test):.3f}“)
# ロジスティック回帰の精度: 0.767, ランダムフォレストの精度: 0.816
TensorFlowとPyTorchは高度な深層学習の分野で、画像認識や自然言語処理などに広く使われています。
まとめ
Pythonの標準ライブラリはOS操作や数学計算、日時処理など基本的な機能を提供し、外部ライブラリはWEBスクレイピングやデータ解析、機械学習など専門的な機能を提供します。
目的に応じて使い分けることで、より効率的な開発が可能になります。まずは標準ライブラリから使いこなしていきましょう。