0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

観測ログや処理済みデータの一覧を 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 を扱うことが多い方は、ぜひワークフローに組み込んでみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?