【Python】CSVファイルを1行ずつ読み込む方法を解説

CSVファイルのデータを処理するために1行ずつ読み込んで処理したい時があります。

CSVファイルを一気に読み込む方法は知っているけど1行ずつ読み込む方法は知らない、そもそもCSVファイルからデータを読み取る方法を知らない人もいるのではないでしょうか。

この記事では、CSVファイルからcsv.readerPandasライブラリを使って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ライブラリのどちらを使うかは、プロジェクトの要件や好みに応じて選択してください。

1 2
目次から探す