Pythonでcsvやエクセルファイルを分割するプログラム

Pythonでファイル自動分割

1つのファイルから目的別の複数ファイルに分割したい。例えば、エクセル1BOOKに10万行データがあって、宛先毎にエクセルファイルを分けたいケースです。宛先件数が多いほど、別BOOKに保存する作業は大変なので、自動化したい作業です。

本記事では、約2,000行のcsvファイルを読み込んで特定Keyを対象にファイル分割するプログラムをご紹介します。

目次

1つのcsvやExcelを特定Keyで分割するプログラム

ライブラリのインストール

import pandas as pd

pandasがない方は下記コマンドでインストール

pip install pandas

上記でインストールできない場合はPythonでpip installが使えない時のプロキシとSSL無視をご覧くださいませ。

今回利用するデータ表示とカテゴリIDで分割する方法の説明

今回の利用データは下記です。一番左のカテゴリIDをKeyにファイルを分割するプログラムを組みました。

約2000件のデータをpandasのdataframeに入れた様子

1ファイルを分割するPython関数

プログラムを関数化し、必用情報を入力するだけでアウトプットできるようにしました。必要情報は下記。分割後のファイルは指定したフォルダ配下に格納されるようにして、ファイル名は「ファイル名+カテゴリID」としました。

  • sep_key(複数ファイルに分けるためのKey 例:宛先や管理NOなど)
  • input_csv(分割元のファイルpath)
  • rezult_dir(分割ファイルを配置するフォルダpath)

#関数
def sep_csv(sep_key,input_csv,rezult_dir):

    #ファイル読み込み
    df1=pd.read_csv(input_file)
    
    #①ファイル分割するkeyを指定する
    sep_key_1=df1[[sep_key]].drop_duplicates()
    
    #②keyを元にファイル分割実行
    [df1[df1[sep_key]==i[0]].to_csv(rezult_dir + "ファイル名" +str(i[0] ) + ".csv",index=False) for i in df1.values.tolist()]

    return

#②keyを元にファイル分割実行の処理でループ処理を回して、カテゴリIDをKeyとしてファイル分割・保存をしています。

今回の処理はcsvで書きましたが、エクセルの場合はpd.read_excelを使えばよいです。その他にも文字コードの指定など場合によっては必要です。

指定フォルダにファイル分割された様子です。ファイル名の後にカテゴリIDをつけています。

ファイル分割された様子
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

著者:ブロガー2つ(につ)

■サイト設立目的
人海戦術の時代からテクノロジー活用による自動化促進の時代に変化。テクノロジー活用を促進するための情報共有やテクノロジー支援を行います。

目次