CSVファイルのデータを処理するために1行ずつ読み込んで処理したい時があります。
CSVファイルを一気に読み込む方法は知っているけど1行ずつ読み込む方法は知らない、そもそもCSVファイルからデータを読み取る方法を知らない人もいるのではないでしょうか。
この記事では、CSVファイルからcsv.reader
やPandas
ライブラリを使って1行ずつデータを読み取る方法について詳しく解説していきます。
CSVファイルから1行ずつ読み込んで処理する方法
CSVファイルから1行ずつ読み込んで処理する方法は、主に2つの方法があります。
csvモジュールを使った方法と、Pandasライブラリを使った方法です。
それぞれの方法について詳しく見ていきましょう。
csv.readerを使った1行ずつの読み込み
csvモジュールを使って、CSVファイルから1行ずつ読み込む方法を説明します。
ファイルオープンとcsv.readerの設定
まずは、CSVファイルを開き、csv.readerオブジェクトを作成します。
以下のサンプルコードでは、sample.csv
というファイルを開いています。
import csv
with open('sample.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
forループで1行ずつ読み込む
csv.readerオブジェクトを使って、forループを使って1行ずつ読み込みます。
import csv
with open('sample.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)
読み込んだ行の処理方法
読み込んだ行は、リスト形式で取得されます。
リストの各要素にアクセスして、処理を行うことができます。
import csv
with open('sample.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(f'名前: {row[0]}, 年齢: {row[1]}, 性別: {row[2]}')
Pandasを使った1行ずつの読み込み
Pandasライブラリを使って、CSVファイルから1行ずつ読み込む方法を説明します。
Pandasのchunksizeオプション
Pandasのread_csv
関数には、chunksize
というオプションがあります。
これを使うことで、CSVファイルを指定した行数ずつ読み込むことができます。
import pandas as pd
chunksize = 1
reader = pd.read_csv('sample.csv', chunksize=chunksize, encoding='utf-8')
forループで1行ずつ読み込む
chunksize
を指定して作成したreaderオブジェクトを使って、forループを使って1行ずつ読み込みます。
import pandas as pd
chunksize = 1
reader = pd.read_csv('sample.csv', chunksize=chunksize, encoding='utf-8')
for chunk in reader:
print(chunk)
読み込んだ行の処理方法
読み込んだ行は、データフレーム形式で取得されます。
データフレームの各要素にアクセスして、処理を行うことができます。
import pandas as pd
chunksize = 1
reader = pd.read_csv('sample.csv', chunksize=chunksize, encoding='utf-8')
for chunk in reader:
print(f"名前: {chunk['名前'].values[0]}, 年齢: {chunk['年齢'].values[0]}, 性別: {chunk['性別'].values[0]}")
以上が、CSVファイルから1行ずつ読み込んで処理する方法です。
csvモジュールとPandasライブラリのどちらを使うかは、プロジェクトの要件や好みに応じて選択してください。