はじめに
観測ログや処理済みデータの一覧を CSV ファイルとして保存しておくと便利ですが、行数が多い CSV をパワーポイントに貼る、あるいは 複数の図表に分割して整理したい場面はよくあります。
たとえば、以前の記事では観測ログを Python で整形する方法を紹介しました:
こうして作成した CSV は扱いやすい一方で、対象によっては 100 行を超える長い表になることがあります。
そのままスライドに載せると見づらくなるため、適当なサイズで分割できる関数があると便利です。
そこで本記事では、任意の CSV ファイルを「ヘッダーあり/なし」を選んで n 分割する、シンプルで汎用的な関数を紹介します。
CSV を n 分割する関数
import pandas as pd
import numpy as np
def split_csv(
input_csv,
n=2,
output_prefix="part",
keep_header=True,
encoding="utf-8"
):
"""
CSV を n 分割して保存する汎用関数。
Parameters
----------
input_csv : str
入力 CSV ファイルのパス
n : int, optional
何分割するか(デフォルト: 2)
output_prefix : str, optional
出力ファイルの先頭につける名前(例: "part" → part_1.csv)
keep_header : bool, optional
True → ヘッダー行つきで保存
False → ヘッダーなし(LaTeX 表の貼り付けなどに便利)
encoding : str
文字コード(UTF-8 推奨)
"""
df = pd.read_csv(input_csv, encoding=encoding)
total_rows = len(df)
splits = np.array_split(df, n)
for i, chunk in enumerate(splits, start=1):
filename = f"{output_prefix}_{i}.csv"
chunk.to_csv(
filename,
index=False,
header=keep_header,
encoding=encoding
)
print(f"Saved: {filename} (rows = {len(chunk)})")
print(f"\nDone! {n} files created from '{input_csv}'.")
使い方
例:4 分割する
split_csv("obs_info.csv", n=4, output_prefix="obs_info_part", keep_header=True)
出力例:
obs_info_part_1.csv
obs_info_part_2.csv
obs_info_part_3.csv
obs_info_part_4.csv
おわりに
CSV を分割するだけの簡単な関数ですが、研究ノート・スライド作成・資料整理のどれでも役に立ちます。
観測ログや解析結果の CSV を扱うことが多い方は、ぜひワークフローに組み込んでみてください。