Pythonを使ってCSVファイルを分割する方法についてご紹介。
縦に長いCSVファイルを一定の行数で分割してCSVファイルを出力することを想定。
120万レコードのCSVファイルを1万レコードごとに分割してアップロードが必要な場面があり、スクリプト作成しました。
コード
データを15行ずつ分割して新しくファイルを出力する場合
import pandas as pd
DATA = pd.read_csv('./01_元データ/test.csv' , encoding='cp932')
step = 15 #分割単位のパラメータ
for i in range(0, len(DATA), step):
OUTPUT_DATA = pd.DataFrame()
DATA_SPLIT = DATA.iloc[i:i+step,:]
DATA_SPLIT.to_csv('./02_出力データ/出力' + str(i+1) +'-.csv' , encoding='cp932',index = False)
データは対象のフォルダの配下に「01_元データ」「02_出力データ」の2つのフォルダを作成し、”01_元データ”内にtest.csvを格納しています
実行後は”02_出力データ”内にファイルが生成されます。
補足
pd.read_csv('./01_元データ/test.csv' , encoding='cp932')
「./」でカレントディレクトリからの相対パスを指定
EXCELで作成した日本語CSVの場合、「encoding=’cp932’」を指定することで文字化けを回避できる。元ファイルのエンコード方式に合わせて変更してください。
for i in range(0, N, step):
で0~Nまでstepごとにiを増やしながら繰り返していくことになります。
len(DATA)でDATAの行数を出力しています。
DATA.iloc[m:n,p:q]
.ilocを使うことでDATA内のデータを、m行目~n-1行目、p列目~q-1列目まで切り出す事ができます。
逆にCSVを結合する場合は下記の記事をご参照ください。