第10章 基本ライブラリ

基本ライブラリ(標準ライブラリ)とは?

✅ Pythonの基本ライブラリ(標準ライブラリ)とは?

🔹 Pythonをインストールした時点で最初から使える公式ライブラリ集
別途インストール不要です。

🧠 イメージ

Python本体 = エンジン
標準ライブラリ = 工具箱

🔎 組み込み関数との違い

種類 import必要?
組み込み関数 print(), len() ❌ 不要
標準ライブラリ math, os, datetime ✅ 必要

🟢 よく使う標準ライブラリ

📐 数学系
math

import math
math.sqrt(16)

三角関数・平方根など

random

import random
random.randint(1, 10)

乱数生成

📁 ファイル・OS操作
os

import os
os.getcwd()

フォルダ操作など

pathlib

from pathlib import Path
Path("test.txt").exists()

パス操作(最近はこちらが主流)

📅 日付・時間
datetime

import datetime
datetime.datetime.now()

🌐 インターネット
urllib

Web通信

http.server

簡易Webサーバー

🧵 高度な処理
threading

並列処理

multiprocessing

マルチプロセス

🗜 データ変換
json
import json

JSON読み書き

🔍 正規表現
re
import re

文字列検索・パターンマッチ

🎯 標準ライブラリの規模

Pythonの標準ライブラリは非常に豊富で、「batteries included(電池同梱)」と呼ばれます。

つまり:最初からかなりのことができる

🟣 NumPyとの違い

numpy → 外部ライブラリ(別途インストール)

matplotlib → 外部

pandas → 外部

📌 まとめ

種類 例
組み込み print, len
標準ライブラリ math, os, datetime
外部ライブラリ numpy, pandas

特に重要なのは:
math
random
datetime
os
pathlib
json
re

もしよければ:

標準ライブラリ厳選20個解説

ここでは 「実際によく使う標準ライブラリ 厳選20個」 を、用途と一言解説つきで整理します。(※組み込み関数ではなく、import が必要なもの)

🟢 基本・日常でよく使う
1️⃣ math
高度な数学(sqrt, sin, log など)

2️⃣ random
乱数生成

3️⃣ datetime
日付・時刻処理

4️⃣ time
時間計測・待機処理

5️⃣ os
OS操作(フォルダ・環境変数)

🟢 ファイル・データ処理
6️⃣ pathlib
パス操作(今はこちらが主流)

7️⃣ csv
CSV読み書き

8️⃣ json
JSONデータ処理

9️⃣ pickle
Pythonオブジェクト保存

🔟 sqlite3
軽量データベース

🟢 文字列・検索
11️⃣ re
正規表現(高度な文字列検索)

12️⃣ string
文字列定数(ascii_lettersなど)

🟢 システム・実行制御
13️⃣ sys
Python実行環境の情報取得

14️⃣ argparse
コマンドライン引数処理

15️⃣ logging
ログ出力(printより実務向け)

🟢 データ構造・便利ツール
16️⃣ collections
便利なデータ構造(Counterなど)

17️⃣ itertools
高度な繰り返し処理

18️⃣ functools
関数拡張(デコレータなど)

🟢 並列処理
19️⃣ threading
スレッド処理

20️⃣ multiprocessing
マルチプロセス処理

特に重要なのは:

math
datetime
pathlib
csv
json
re
logging
collections

ここを理解すると一段上にいきます。

もしよければ次は:

📊 標準ライブラリだけで作る小さな実用プログラム

🧠 NumPyと標準ライブラリの住み分け

🔧 実務で本当に使うトップ10深掘り

どれに進みますか?

10-2 数学演算をあつかうmathモジュール

Pythonの標準ライブラリの中でも math モジュールは超重要です。

✅ math モジュールとは?

🔹 高度な数学関数をまとめた標準ライブラリ

※使うときは import が必要

import math

🟢 よく使う関数一覧

📐 ① 基本的な計算
math.sqrt(16) # 平方根 → 4.0
math.pow(2, 3) # 2^3 → 8.0
math.fabs(-5) # 絶対値 → 5.0

※ abs() は組み込み関数(math不要)

📊 ② 三角関数
math.sin(x)
math.cos(x)
math.tan(x)

⚠ 単位はラジアンです

度 ↔ ラジアン変換
math.radians(180) # 度 → ラジアン
math.degrees(math.pi) # ラジアン → 度

🔢 ③ 対数
math.log(10) # 自然対数 ln
math.log10(100) # 常用対数
math.exp(1) # e^1

📈 ④ 切り上げ・切り捨て
math.ceil(3.2) # → 4
math.floor(3.8) # → 3
math.trunc(3.9) # → 3

🔣 ⑤ 定数
math.pi # 円周率
math.e # 自然対数の底
math.tau # 2π

🧠 math と numpy の違い
math numpy
単一の数値向け 配列向け
速い ベクトル計算に強い

例:

math.sin(0.5) # OK

でも

math.sin([1,2,3]) # エラー

NumPyならOK:

import numpy as np
np.sin([1,2,3])

🎯 あなた向けポイント

AM・FFTを扱っているので:

math → 単純計算

numpy → 波形処理

という使い分けになります。

🔥 よく使う厳選10個

sqrt
sin
cos
tan
log
exp
pi
ceil
floor
radians

もしよければ:

三角関数をグラフで理解

mathで物理計算例

numpyとmathの速度比較

どれに進みますか?

10-3 モジュールと型

とても本質的な質問です 👍
ここを理解すると Python の構造がかなり整理されます。

✅ 結論(まず全体像)
用語 何か? 例
モジュール 機能のまとまり(ファイル) math, os, numpy
型(type) データの種類 int, str, list, float

🟢 ① モジュールとは?

🔹 Pythonファイル(.py)で作られた「機能の箱」

例:
import math

ここで math はモジュール。

中には:

math.sqrt()
math.sin()
math.pi

のような機能が入っています。

📦 イメージ

モジュール = 道具箱
関数やクラスが中に入っている

🔎 実際に確認
import math
type(math)

結果:
<class ‘module’>
つまり math は「module型」のオブジェクト。

🟢 ② 型(type)とは?

🔹 データの種類

例:
x = 10
type(x)

結果:
<class ‘int’>

よくある型
int # 整数
float # 小数
str # 文字列
list # リスト
tuple # タプル
dict # 辞書
bool # 真偽値

🧠 型は「設計図」

実は:
int
str
list

これらは クラス です。
つまり:型 = クラス

🎯 モジュールと型の違い

モジュール

ファイル単位
機能の集合
importが必要

例:
math
numpy
os

データの種類
クラスとして実装
変数がどんなデータかを決める

例:
int
str
list
range

🔥 つながり

モジュールの中には:

関数
クラス(=型)
定数

が入っています。

例:

import datetime

この中には:datetime.datetime ← これは型(クラス)があります。

🌱 まとめ図

Python
├─ 組み込み型(int, str, list)
├─ 組み込み関数(print, len)
└─ モジュール(math, os)
├─ 関数
├─ クラス(型)
└─ 定数

今のあなたの理解度なら、次は:

「型とクラスの違い」

「モジュールも実はオブジェクト」

「importの内部仕組み」

どこまで掘りますか?

10-4 データを保存する方法

いい質問ですね 👍
「データを保存する方法」は用途によって変わります。
目的別に整理します。

✅ ① テキストファイルに保存(いちばん基本)

🔹 文字列を書き込む

with open("data.txt", "w", encoding="utf-8") as f:
f.write("こんにちは\n")

モジュール

open() は組み込み関数(標準ライブラリ)

🔹 読み込み

with open("data.txt", "r", encoding="utf-8") as f:
text = f.read()
print(text)

✅ ② CSVで保存(表データ)

🔹 CSV保存

import csv

data = [["名前", "年齢"], ["太郎", 20]]

with open("data.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(data)

モジュール

csv

✅ ③ JSONで保存(辞書データ)

import json

data = {"name": "太郎", "age": 20}

with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f)

モジュール

json

✅ ④ Pythonオブジェクトをそのまま保存

import pickle

with open("data.pkl", "wb") as f:
pickle.dump(data, f)

モジュール

pickle

⚠ 他人から受け取ったpickleは危険(実行される可能性あり)

✅ ⑤ NumPyデータ保存(配列)

import numpy as np

arr = np.array([1,2,3])
np.save("data.npy", arr)

ライブラリ

NumPy

✅ ⑥ データベース保存(本格的)

import sqlite3

モジュール

sqlite3

小規模DBを扱える

🎯 どれを使うべき?

用途 おすすめ
メモ保存 txt
表データ csv
設定ファイル json
Python内部用 pickle
数値配列 numpy
本格保存 sqlite

🌱 今のあなたなら

AM・FFT・数値解析をしているので:

波形保存 → numpy.save

結果ログ → csv

設定値保存 → json

が実用的です。

もしよければ:

FFT結果をCSV保存する例

波形をファイルに保存して再読み込み

実務向けフォルダ構成例

どれに進みますか?

10-5 ファイルを読み込む方法

いいですね 👍
今度は「読み込み」ですね。用途別に整理します。

✅ ① テキストファイルを読む(基本)

with open("data.txt", "r", encoding="utf-8") as f:
text = f.read()

print(text)

1行ずつ読む場合
with open("data.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())

✅ ② CSVファイルを読む

import csv

with open("data.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)

使用モジュール:
csv

✅ ③ JSONファイルを読む

import json

with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)

print(data)

使用モジュール:
json

✅ ④ NumPy配列を読む

import numpy as np

arr = np.load("data.npy")
print(arr)

使用ライブラリ:
NumPy

✅ ⑤ SQLiteデータベースを読む

import sqlite3

conn = sqlite3.connect("data.db")
cursor = conn.cursor()

cursor.execute("SELECT * FROM table_name")
rows = cursor.fetchall()

print(rows)
conn.close()

使用モジュール:
sqlite3

🎯 どれを使う?

データ形式 読み込み方法
txt open()
csv csv
json json
numpy配列 np.load
DB sqlite3

📌 実務で大事なこと

encodingを指定する(utf-8推奨)
with構文を使う(自動で閉じる)
ファイルパスに注意

🔍 パス指定例

from pathlib import Path

file = Path("data") / "data.txt"
with open(file, "r", encoding="utf-8") as f:
print(f.read())

使用モジュール:
pathlib

今のあなた(FFTや解析をしている)なら:

計算結果 → CSV保存 → 再読み込み

波形 → NumPy保存 → 再利用

が自然な流れです。

やってみますか?

「FFT結果を保存 → 読み込み → 再描画」まで一気にやりますか?

参考 JSONとは?

とても重要なテーマです 👍
今後プログラムを書くなら必ず出会います。

✅ JSONとは?

🔹 JavaScript Object Notation の略
🔹 データを「テキスト形式」で保存・通信するための形式

見た目はこんな感じです:

{
"name": "太郎",
"age": 20,
"student": true
}

🧠 特徴

人間が読みやすい
軽量
ほぼすべての言語で使える
Web通信で標準的に使われる

Pythonとの関係

Pythonでは標準ライブラリの jsonで扱います。

🔹 Python → JSON 保存

import json

data = {"name": "太郎", "age": 20}

with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f)

🔹 JSON → Python 読み込み

import json

with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)

print(data["name"])

🔄 データ対応関係

JSON Python
object dict
array list
string str
number int / float
true/false True / False
null None

何に使うの?

Web API通信
設定ファイル保存
データ交換
ログ保存
フロントエンドとの連携

CSVとの違い

JSON CSV
階層構造OK 表形式のみ
辞書型向き 表データ向き
Webで主流 Excel向き

 

コメント