📝

Python便利メモ

2024/02/02に公開

Python全般

Pythonで並列処理

# func: function, 並列化したい処理
# args_list: list, 入力とするもののリスト

from tqdm.notebook import tqdm
from multiprocessing import Pool, cpu_count
with Pool(cpu_count()) as p:
    result_list = list(tqdm(p.imap(func, args_list), total=len(args_list)))

pythonでfull pathからfilenameを取得するための関数

import os

def get_filename_from_full_path(full_path):
    # パスを分割して、ファイル名部分を取得
    filename = os.path.basename(full_path)
    return filename

# 使用例
full_path = '/path/to/your/file.txt'
filename = get_filename_from_full_path(full_path)
print(f'ファイル名: {filename}')

拡張子を除く

import os
os.path.splitext(filepath)[0]
# os.path.splitext(os.path.basename(filepath))[0]

ゼロ埋めと小数点4桁まで表示

print(f'Epoch {epoch:03d}')
print(f'Validation score: {val_score:.4f}')

logger

def init_logger(log_file='train.log'):
    from logging import getLogger, INFO, FileHandler,  Formatter,  StreamHandler
    logger = getLogger(__name__)
    logger.setLevel(INFO)
    handler1 = StreamHandler()
    handler1.setFormatter(Formatter("%(message)s"))
    handler2 = FileHandler(filename=log_file)
    handler2.setFormatter(Formatter("%(message)s"))
    logger.addHandler(handler1)
    logger.addHandler(handler2)
    return logger

logger = init_logger()
logger.info('Start Logging...')

pandas

表示行・列の設定

pd.set_option('display.max_rows', 100)
pd.set_option('display.max_columns', 100)

複数桁の出力

pd.options.display.float_format = '{:.3f}'.format

複数のシートに出力

with pd.ExcelWriter("output.xlsx") as writer:
    df1.to_excel(writer, sheet_name="sheet1")
    df2.to_excel(writer, sheet_name="sheet2")

Matplotlib

横長/縦長の設定, 複数図の設定

図の縦長/横長の設定: plt.figure(figsize=(width, height))
複数図の設定: plt.subplot(nrows, ncols, index)

w = 8
h = 6
plt.figure(figsize=(w, h))

nr = 2
nc = 1
idx = 1
plt.subplot(nr, nc, index)
plt.scatter([0, 1], [1, 2])

idx = 2
plt.subplot(nr, nc, index)
plt.scatter([0, 1], [-1, -2])

Discussion