行の多いCSVファイルをPythonで分割する

※当サイトはアフィリエイト広告を利用しています

データ分析

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を結合する場合は下記の記事をご参照ください。

この記事を読んだ人がよく見ています

タイトルとURLをコピーしました