1. 変数

  • 変数の参照先アドレスの確認: id(変数)

  • 変数がローカルに存在するかどうかを調べる: if '変数名' in locals():

1.1. 型の変換

  • 数値を文字列に変換: str(数値)

  • 文字列を整数に変換: int(文字列)

1.2. 型の確認

  • オブジェクトの型の確認: type(オブジェクト)

1.3. 組み込み型

1.3.1. シーケンス型

  • 要素数を数える: len(sequence)

str
  • 文字列の定義: 文字列をシングルクォート(')またはダブルクォート(")で囲んで定義する(例 '文字列' または "文字列")

  • raw 文字列: r’文字列' でエスケープシーケンスを展開しない。

  • format 文字列: f'文字列{変数}' で、変数 の値に置き換えた文字列を作成する。

    • 小数点以下を n 桁で表示する場合には、{変数:.n f}

  • 文字列を区切り文字で分割してリストとして利用する: 文字列.split()

  • 文字列の長さの取得: len(文字列)

コード
  • 改行コード: \n

  • 行頭復帰コード: \r

list
  • リストの定義: 例 list = [value1, value2, value3, value4, …​]

  • データの取り出し

    • i 番目の要素: list[_i]

    • 最後の要素: list[-1]

  • リストに要素の追加: list.append(追加するデータ)

    • 複数の要素を追加する場合: list += [追加するデータ1, 追加するデータ2, …​]

  • i 番目の要素の削除: list.pop(i)

  • リストの要素の数を調べる: len(list)

  • リストの要素の最大値を求める: max(list)

  • リストの要素の最小値を求める: min(list)

  • リストに要素が含まれているかを判断する: 要素 in list

tuple
  • 要素の値を変更できない配列。

  • カンマ区切りで定義。通常は () が用いられる。例 tuple = (value1, value2, value3, value4, …​)

  • リストをタプルに変換する: tuple(list)

1.3.2. range

  • range(N): 0 以上 N 未満の連番の整数の range 型オブジェクトを生成する。

  • 等差数列の range 型オブジェクトを生成する: range(start, stop, step) (初項: start, 公差: step の等差数列 n (start <= n < stop ) を要素に持つ range 型オブジェクトを生成する。step を省略すると、1 が設定される)

1.3.3. マッピング型

dict, 辞書型
  • 辞書の宣言: dict = {}

  • 要素を定義: dict = {key1: value1, key2: value2, key3: value3, …​}

  • 要素を追加: dict[key] = value

  • 複数の要素を追加: dict.update({key1: value1, key2: value2, key3: value3, …​})

  • キーの一覧を取得する: dict.keys()

2. 繰り返し処理

2.1. while文

while 条件式:
  条件式が真の場合に実行される処理
Example 1. 変数 i を 0 から始めて i が N-1 となるまで実行文を N 回を繰り返す。
i = 0
while i < N:
  実行文
  i += 1

2.2. for文

for 変数 in オブジェクト:
  実行される処理
Example 2. 変数 i を 0 から始めて i が N-1 となるまで実行文を N 回を繰り返す。
for i in range(N):
    実行文

3. 条件式

if 条件式1:
    条件式1が真の場合に実行される処理
elif 条件式2:
    条件式2が真の場合に実行される処理
...
else:
    すべての条件式が偽の場合に実行される処理
  • 複数の条件の指定

    • 論理積: 条件式1 and 条件式2

    • 論理和: 条件式1 or 条件式2

4. 置換

  • 文字列.replace(置き換えられる文字列, 置き換わる文字列)

5. 例外処理

try:
    処理
except:
    例外処理

6. 乱数

乱数を作成するモジュールとして、Python 標準ライブラリの random モジュールを用いる方法がある。
  • インポート: import random

  • 0.0 以上 1.0 未満の乱数を生成する: random.random()。(float型)

7. ファイルの読み込み

  • open を利用する方法

    • ファイルを読み込み用に開く: f = open('ファイル名', 'r')

    • ファイルを読み込む

      • ファイル全体を読み込む: f .read()

      • 行単位にリストとして読み込む: f .readlines()

    • ファイルを閉じる: f.close()

8. 関数

def 関数名(引数1, 引数2, ...):
    処理
  • 戻り値: return 戻り値 で指定する。

  • 複数の戻り値を返す場合は、カンマ区切り(タプル)で与える: return 戻り値1, 戻り値2

9. クラス

  • クラスの定義

class Class名:
    クラスフィールド = クラスフィールドの値
    def __init__(self, 引数1, 引数2, ...):
        処理
  • メソッドの定義

def メソッド(self, 引数1, 引数2, ...):
    処理
  • インスタンスフィールド: self.フィールド名

  • アクセス制御: フィールドやメソッド名の前にアンダースコアを2つつけると外からアクセスができなくなる。

  • インスタンスの生成: Class(引数1, 引数2, …​)

10. モジュール、パッケージの利用

  • モジュールまたはパッケージのインポート: import モジュール名 or import パッケージ名

  • モジュールを別名でインポート: import モジュール名 as 名前

    • 自作のモジュールを使う場合には、モジュール名は、ファイル名から .py を除いた部分となる。

  • モジュールの中から特定の関数やクラスなどをインポート: from モジュール import 関数名 or クラス名

  • 読み込んだモジュールの関数を利用: モジュール名.関数名

11. re モジュール

  • インポート: import re

  • 文字列を区切り文字で分割したリストを作成する: re.split('区切り文字', 文字列)

    • '区切り文字' には、正規表現が使用可能。複数の条件で分割したい場合には、'[…​]' を使用する。

  • 文字列の先頭とパターンがマッチするかを判断する: re.match('パターン', 文字列)

  • 文字列全体とパターンがマッチするかを判断する: re.search('パターン', 文字列)

12. os モジュール

os に関連した関数を集めたモジュール
  • インポート: import os

  • パスを結合する: os.path.join(パス1, パス2)

  • os.environ を使用して環境変数を取り扱う。

    • 環境変数の一覧を取得する: print(os.environ)

    • 特定の環境変数を取得する: os.environ.get("環境変数")

  • ファイルの情報を取得する: os.stat(ファイル名)

  • ファイル、ディレクトリの一覧を取得する: os.listdir(パス)

  • ファイルパスからディレクトリを抽出する: os.path.dirname(ファイルパス)

  • ファイルパスからファイル名を抽出する: os.path.basename(ファイルパス)

  • ファイルが存在するかどうかを調べる: os.path.isfile(ファイル名)

  • ディレクトリが存在するかどうかを調べる: os.path.isdir(ディレクトリパス)

  • ディレクトリを作成する: os.mkdir(ディレクトリパス)

13. glob モジュール

  • インポート: import glob

14. shutil モジュール

  • インポート: import shutil

  • ファイルの移動: shutil.move(元のファイル, 移動先)

15. subprocess モジュール

  • インポート: import subprocess

  • コマンドを実行する: subprocess.run(コマンド)

  • コマンドを引数を与えて実行する: subprocess.run([コマンド, 引数])

    • フォルダ開く:subprocess.run(['explorer', パス], shell=True)

16. tkinter モジュール

python で GUI を扱うためのライブラリ。python の標準のライブラリ
  • ファイルを選択するダイアログを作成する。

from tkinter import filedialog
type = [('ラベル1', '拡張子1'), ('ラベル2', '拡張子2'), ...]
dir = ディレクトリ
file = filedialog.askopenfilename(title="タイトル", filetypes=type, initialdir=dir)
  • ディレクトリを選択するダイアログを作成する。

from tkinter import filedialog
dir = ディレクトリ
file = filedialog.askdirectory(title="タイトル", initialdir=dir)

17. pywin32 ライブラリ

  • インストール: pip install pywin32

  • インポート: import win32com.client as win32

  • Excel

    • Excel に接続: excel = win32.Dispatch("Excel.Application")

    • Excel ファイルを開く: wb = excel.Workbooks.Open(excelファイル)

    • Excel ファイルを閉じる: wb.Close()

  • PowerPoint

    • Powerpoint に接続: powerpoint = win32.Dispatch("PowerPoint.Application")

18. pydicom モジュール

DICOM ファイルを扱うモジュール

18.1. 使用法

  • インストール: pip install pydicom

  • インポート: import pydicom

  • DICOM ファイルの読み込み: ds = pydicom.dcmread(読み込むファイル名)。ds は DICOM データセット (pydicom.dataset.FileDataset 型)。

  • DICOM ファイルの書き出し: ds.save_as(書き出す先のファイル名, write_like_original=False)。

  • ds.dir(): キーワードの一覧を出力する。

18.2. CT

  • CT 画像を取得する: ds.pixel_array (numpy.ndarray 型 (要素のデータ型は int16))

  • CT 画像の横のピクセル数 (0028, 0010): ds.Rows (int 型)

  • CT 画像の縦のピクセル数 (0028, 0011): ds.Columns (int 型)

  • CT 画像のピクセル間隔 (0028, 0030): ds.PixelSpacing (pydicom.multival.MultiValue 型)

19. matplotlib モジュール

データの可視化用ライブラリ。グラフ全体を管理する Figure クラスとひとつのグラフを管理する Axes クラスのインスタンスを生成してグラフを作成する。

  • インストール: pip install matplotlib

  • インポート: import matplotlib.pyplot as plt

  • 2次元配列の表示: plt.imshow(img)

  • Figure インスタンスの作成: fig = plt.figure()

  • Axes インスタンスの作成: ax = fig.add_subplot()

  • ax の X 座標の表示範囲を定義する: ax.set_xlim(Xmin, Xmax)

  • ax の Y 座標の表示範囲を定義する: ax.set_ylim(Ymin, Ymax)

  • カラーバーを表示する: plot.colorbar()

20. NumPy ライブラリ

  • インストール: pip install numpy

  • インポート: import numpy as np

  • ndarray の生成

    • リストから生成: np.array([データ1, データ2, …​])

    • ファイルにあるデータから ndarray に読み込む: np.loadtxt('ファイル名')

    • 等差数列の ndarray を生成する: np.arange(start, stop, step) (初項: start, 公差: step の等差数列 n (start <= n < stop ) を要素に持つ ndarray を生成する。)

    • ある配列と同じ shape で 0 を要素に持つ配列を作成する。: np.zeros_like(配列)

  • ndarray の情報を調べる。

    • データの全要素数: ndarray.size

    • データの各次元の要素数: ndarray.shapse

    • データの次元数: ndarray.ndim

    • データの要素の型: ndarray.dtype

  • 列の並べ替え: ndarray[:, [列1, 列2, 列3, …​]] (列n は並べ替える前の列のインデックスを、並べ替えたい順に書く)

  • 要素の型を変換する: ndarray.astype('型名')。例: ndarray.astype('uint16')

  • 要素を追加した ndarray を生成する: np.append(ndarray, 要素)

21. Pandas ライブラリ

データ解析用のライブラリ。Series 型が 1 次元のデータを扱い、DataFrame 型が 2 次元の表形式のデータを扱う。
DataFrame は、2 次元配列のデータと行のラベルを表す index, 列名を表す columns から構成される。
  • インストール: pip install pandas

  • インポート: import pandas as pd

21.1. ファイルから DataFrame を読み込む

21.1.1. excel, csv ファイルからの読み込み

  • csv ファイルの読み込み: df = pd.read_csv(ファイル名, sep=",")。 (df は DataFrame 型)

    • 一行目がヘッダとして取り扱われ、columns に列名として割り当てられる。

    • 読み込む csv ファイルにヘッダがないときには、read_csv() の引数に header=None を追加して読み込ませる。 列名を設定する場合は、names=['列1', '列2', '列3', …​] を引数に追加する。

    • 特定の列をインデックスに指定する。

      • 特定の列をインデックスに指定する場合は、index_col = 列番号 を引数に追加する。

      • 複数の列をインデックスに指定する場合は、index_col=['列名1', '列名2', '列名3', …​] を引数に追加する。

    • 日本語を含むファイルを取り扱う場合は、使用している文字コードを encoding='文字コード' のように引数に入れる (例: encoding='shift_jis')。

    • 最初の n 行を無視して読み込む場合は、skiprows = n を引数に追加する。

    • 最後の n 行を無視して読み込む場合は、skipfooter = n と engine = 'python' を引数に追加する。

    • 各列の型を指定する: dtype={0: 型1, 1: 型2, 2: 型3, …​} を引数に追加する。

    • カンマ区切りの数値を数値として読み込む (そのままでは object 型として読み込まれる) 場合は thousand = ',' を引数に追加する。

21.1.2. excel ファイルからの読み込み

  • excel ファイルの読み込み: df = pd.read_excel(ファイル名, sheet_name = シート名)

    • engine="odf" を引数に追加することで、LibreOffice Calc 形式のファイルを読むことができる。

  • excel ファイルからすべてのシートを取得する: df = pd.read_excel(ファイル名, sheet_name = None)。df は、シート名を key、各シートのデータを要素とする辞書型。

21.2. DataFrame の操作

21.2.1. DataFrame の作成

  • DataFrame の作成: df = pd.DataFrame(data=データ)

    • data を指定しないで df = pd.DataFrame() とすると、空の DataFrame が作成される。

    • 行名、列名を追加する場合には、index = 行ラベル, columns=列ラベル を引数として追加する。ここで 行ラベル, 列ラベル は、リスト等で指定する。

  • 型の確認

    • データフレーム全体の型の確認: print(df.dtypes)

    • 特定の列の型の確認: print(df['列名'].dtypes)

  • 列の型を変更する

    • 時系列以外の型に変換: df['列名'] = df['列名'].astype(型名)

    • 時系列の型 (datetime64[ns] 型) に変換: df['列名'] = pd.to_datetime(['列名'])

      • 日付部分のみのデータに変換したい場合 (object 型): df['列名'] = pd.to_datetime(['列名']).dt.date

21.2.2. DataFrame の操作

  • 列名情報を取得する:

    • Index オブジェクトとして取得する: df.columns

    • ndarray 型で取得する: df.columns.values

    • リスト型で取得する: df.columns.values.tolist()

  • インデックス情報を取得する:

    • Index オブジェクトとして取得する: df.index

    • ndarray 型で取得する: df.index.values

    • リスト型で取得する: df.index.values.tolist()

  • データ部分を ndarray 型で取得する: df.to_numpy()

  • 指定した列をインデックスとする

    • 特定の列をインデックスに指定した DataFrame を作成する: df.set_index('列名')

    • 複数の列をインデックスに指定した DataFrame を作成する: df.set_index(['列名1', '列名2', '列名3', …​])

  • 行数を取得する: len(df)

  • 列番号を取得する: df.columns.get_loc('列名')

  • 特定の列を削除する: df.drop(columns=['削除したい列のラベル1', '削除したい列のラベル2', …​], inplace=True)

  • 特定の例を抜き出した DataFrame を作成する: df[['列1', '列2', …​ ]]

  • NaN を含む行を削除した DataFrame を作成する: df.dropna()

  • NaN を置換した DataFrame を作成する: df.fillna(置換する文字)

  • 新しい列を追加する。

    • 以下は、列1列2を足した列を追加する例:

df['新しい列名'] = df['列1'] + df['列2']
  • DataFrame からデータを1行ずつ取り出し、処理を行う:

for index, rows in df.iterrows():
    行ごとの処理 (index には行名、rows には各行のデータ (Series 型) が与えられる)
  • DataFrame から行番号、列番号を用いてデータを抽出する:

    • 行目, 列目のデータを抽出する: df.iloc[, ]

  • 特定の列の累積和の計算: df[列名].cumsum()

  • 列を並べ替える: df.reindex(index=['列名1', '列名2', '列名3',…​])

  • ソート

    • 行名をもとにソート: df.sort.index()

    • 指定した列の値を元にソート: df.sort.index('列名')

      • 降順にソートする場合は、引数に ascending=False を追加する。

  • 置換

    • 特定の列の文字列の置換を行う。 df['列名']=df['列名'].str.replace('置換される文字列', "置換後の文字列")

  • DataFrame を連結する

    • 行方向に連結する (縦結合): df_merged = pd.concat([df1, df2], axis = 0)

    • 列方向に連結する (横結合): df_merged = pd.concat([df1, df2], axis = 1)

  • DataFrame のオブジェクトのコピーを生成する: df.copy()

21.2.3. Series の操作

  • Series をリスト型に変換する: s.tolist()

  • Series からデータを抽出する: s.iloc[番号]

  • Series を DataFrame に変換する: s.to_frame()

  • DataFrame に Series を新しい列として追加する: df['列名'] = s

21.3. ファイルへの出力

  • csv で保存する: df.to_csv(ファイル名)

    • 日本語を含む場合は、encoding='文字コード' (例 encoding='shift_jis') を引数に追加する。

    • ヘッダを出力しない場合は、header=False を引数に追加する。

    • インデックスを出力しない場合は、index=False を引数に追加する。

    • 書き込む行を指定する場合は、startrow= を引数に追加する。

    • 書き込む列を指定する場合は、startcol= を引数に追加する。

22. openpyxl ライブラリ

Excel ファイルを操作するライブラリ。
  • インストール: pip install openpyxl

  • インポート: import openpyxl

  • book を作成: book = openpyxl.Workbook()

  • book から Sheet という名前のシート取得: sheet = book['Sheet']

  • シートの名前を変更する: sheet.title = 'シート名'

  • シートを追加する: book.create_sheet(title = 'シート名')

  • シートに行を追加する: sheet.append(['データ1', 'データ2', 'データ3', …​])

  • 列番号をアルファベットに変換する: openpyxl.utils.get_column_letter(列番号)

  • book の保存: book.save(ファイル名)

23. Pillow モジュール

画像処理ライブラリ
  • インストール: pip install Pillow

  • インポート: from PIL import Image

  • 画像の読み込み: im = Image.open(ファイル名)

    • サイズ: im.size (tuple 型)

    • 横幅: im.width

    • 縦幅: im.height

  • 画像を表示する: im.show()

  • 画像のサイズを変更する: im_resize = im.resize(サイズ)

  • 画像のトリミング: im.crop(トリミングの範囲)。トリミングの範囲は、(左、上、右、下) のように座標で指定する。

  • 画像を保存: im.save(ファイル名)

    • quality = n を引数に入れることで品質を指定できる。デフォルトは n = 75。

24. OpenCV モジュール

  • インストール: pip install opencv-python

  • インポート: import cv2

25. tabula モジュール

  • インストール: pip install tabula-py

  • インポート: import tabula

  • ファイルの読み込み: dfs = tabula.read_pdf(PDFファイル名)。dfs は、pandas.core.frame.DataFrame 型を要素に持つリスト。

    • ページ数を指定する場合は、pages = 'ページ数' を引数に追加して指定する。デフォルトでは最初のページのみが読み込まれる。

    • すべてのページを読み込む場合は、pages = 'all' を引数に追加する。

    • 枠線で区切られている表のみを抽出する場合は、lattice=True を引数に追加する。

26. paramiko モジュール

  • インストール: pip install paramiko

  • インポート: import paramiko

  • ファイルの転送例 (公開鍵暗号に Ed25519 を使用している場合)。

HOST = 'ホスト'
USER = 'ユーザ名'
KEY_FILE = '秘密鍵'

LOCAL_PATH  = '転送元のファイル名'
REMOTE_PATH = '転送先のファイル名'

private_key = paramiko.Ed25519Key.from_private_key_file(KEY_FILE)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(HOST, username = USER, password = private_key)

sftp = ssh.open_sftp()
sftp.put(LOCAL_PATH, REMOTE_PATH)
sftp.close()

ssh.close()

27. pylint モジュール

  • インストール: pip install pylint

  • Graphviz が必要。

  • クラス図を生成する (package名 はフォルダでも良い): pyreverse -o 出力形式 package名

28. SciPy

  • インストール: pip install scipy

29. pip

  • pip が実行できない場合 (パスが通っていない場合) は、代わりに py -m pip を用いる。例: py -m pip install

  • インストールされているパッケージの確認: pip list

  • インストールされているパッケージの詳細の確認: pip show パッケージ名

30. その他

  • インストールされている Python のバージョンを表示する: python --version または python -V

  • インストールされている Python のバージョンを確認する: py -0p

    • 複数のバージョンが存在するときには、* が付いている方がデフォルトに設定されている。

  • 複数のバージョンが存在する場合には py -m バージョン …​ で特定のバージョンを指定して実行が可能。例: 3.11 にインストールされているモジュールを調べるには、py -3.11 -m pip list

  • Windows にて環境変数の一覧を表示する: set

31. 参考文献