IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

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

Pythonの大きな強みの1つは、豊富なライブラリが利用できることです。インストール時から使える標準ライブラリは基本的な機能を、必要に応じて追加できる外部ライブラリは専門的な機能を提供し、開発効率を大きく向上させます。

本記事では、ライブラリの基礎知識から実践的な使い方まで、具体的なコード例を交えて詳しく解説します。初心者からベテランまで、より効率的な開発のためのヒントが得られる内容となっています。

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スクレイピングやデータ解析、機械学習など専門的な機能を提供します。

目的に応じて使い分けることで、より効率的な開発が可能になります。まずは標準ライブラリから使いこなしていきましょう。