5-1

モジュールの使い方

モジュールのインポート方式import mathmath.sqrt(2)名前空間を保持 ✓from math import sqrtsqrt(2)直接使えるfrom math import *sin(0), cos(0)⚠ 名前衝突の危険

モジュールとは

モジュールとは、Pythonコードがまとめられたファイルです。既存のコードを再利用したり、機能を整理したりするのに使います。

インポートの方法

import モジュール名

python
import mathmath.sqrt(2)   # 1.4142135623730951math.pi        # 3.141592653589793

from … import …

特定の機能だけをインポートします。モジュール名のプレフィックスが不要になります。

python
from math import sqrt, pisqrt(2)   # 1.4142135623730951pi        # 3.141592653589793

import … as …(エイリアス)

モジュールや関数に別名をつけます。

python
import numpy as np              # よく使われる慣習import pandas as pdfrom datetime import datetime as dtnp.array([1, 2, 3])pd.DataFrame({"a": [1, 2, 3]})

注意: from math import * のようにワイルドカードインポートは名前空間が汚染されるため推奨されません。

よく使う標準ライブラリ

math モジュール

python
import mathmath.sqrt(16)        # 4.0(平方根)math.floor(3.7)      # 3(切り捨て)math.ceil(3.2)       # 4(切り上げ)math.log(math.e)     # 1.0(自然対数)math.log10(100)      # 2.0(常用対数)math.log2(8)         # 3.0math.sin(math.pi/6)  # 0.5(sin 30°)math.cos(0)          # 1.0math.factorial(5)    # 120(5!)math.gcd(12, 8)      # 4(最大公約数)

random モジュール

python
import randomrandom.random()              # 0.0以上1.0未満の乱数random.randint(1, 6)         # 1〜6のランダムな整数(サイコロ)random.choice(["A", "B", "C"])  # リストからランダムに1つ選ぶlst = [1, 2, 3, 4, 5]random.shuffle(lst)          # リストをランダムに並び替え(破壊的)random.sample(lst, 3)        # 3つをランダムに選ぶ(非破壊的)# 再現性のために乱数シードを設定random.seed(42)random.random()   # 常に同じ値

datetime モジュール

python
from datetime import datetime, date, timedelta# 現在の日時now = datetime.now()print(now)   # 2024-01-15 10:30:00.123456# 日付の作成d = date(2024, 1, 15)print(d)   # 2024-01-15# 日時の差delta = timedelta(days=7)next_week = d + deltaprint(next_week)   # 2024-01-22# フォーマットprint(now.strftime("%Y年%m月%d日"))  # 2024年01月15日print(now.strftime("%H:%M:%S"))      # 10:30:00

collections モジュール

python
from collections import Counter, defaultdict, deque# Counter: 要素の出現回数を数えるwords = ["apple", "banana", "apple", "cherry", "banana", "apple"]c = Counter(words)c   # Counter({"apple": 3, "banana": 2, "cherry": 1})c.most_common(2)   # [("apple", 3), ("banana", 2)]# defaultdict: キーが存在しない場合のデフォルト値を指定dd = defaultdict(list)dd["fruits"].append("apple")   # KeyErrorにならないdd["fruits"]   # ["apple"]# deque: 両端キュー(先頭と末尾への追加・削除がO(1))dq = deque([1, 2, 3])dq.appendleft(0)   # [0, 1, 2, 3]dq.append(4)       # [0, 1, 2, 3, 4]dq.popleft()       # 0 を取り出す

json モジュール

python
import json# Pythonオブジェクト → JSON文字列data = {"name": "太郎", "age": 25, "scores": [85, 92, 78]}json_str = json.dumps(data, ensure_ascii=False, indent=2)print(json_str)# JSON文字列 → Pythonオブジェクトparsed = json.loads(json_str)print(parsed["name"])   # 太郎# ファイルへの読み書きwith open("data.json", "w", encoding="utf-8") as f:    json.dump(data, f, ensure_ascii=False, indent=2)with open("data.json", "r", encoding="utf-8") as f:    loaded = json.load(f)

練習: 統計計算

基礎

math を使わずに、リストの平均値・分散・標準偏差を計算する関数を定義してください。