【Python】CSVファイルを読み込む基本:csv.readerの使い方とヘッダー処理

Python標準ライブラリの csv モジュールを使用すると、CSV形式のデータを簡単にリストとして取り込むことができます。 ここでは、基本的な全行読み込みの方法と、1行目のタイトル(ヘッダー)を読み飛ばしてデータ部分だけを処理する方法を解説します。

目次

1. CSVファイルをそのまま読み込む

csv.reader オブジェクトを作成し、for 文で回すことで、1行ずつ「文字列のリスト」として取得できます。

サンプルデータ (products.csv)

ID,商品名,価格
101,Apple,120
102,Orange,80
103,Banana,150

ソースコード

import csv

# 1. ファイルを開く
# CSVを扱う際は newline="" を指定するのが推奨されています(改行コードの自動変換防止)
with open("products.csv", encoding="utf-8", newline="") as f:
    
    # 2. Readerオブジェクトを作成
    reader = csv.reader(f)
    
    # 3. 1行ずつ読み込んで表示
    print("--- 全行読み込み ---")
    for row in reader:
        # row は ['ID', '商品名', '価格'] のようなリストになります
        print(row)

実行結果

--- 全行読み込み ---
['ID', '商品名', '価格']
['101', 'Apple', '120']
['102', 'Orange', '80']
['103', 'Banana', '150']

2. ヘッダー行を読み飛ばす方法

データ分析などでは、1行目の項目名は不要で、2行目以降のデータだけを使いたいケースが多々あります。 その場合、next() 関数を使ってイテレータを1つ進めることで、ヘッダーをスキップ(あるいは変数に退避)できます。

ソースコード

import csv

with open("products.csv", encoding="utf-8", newline="") as f:
    reader = csv.reader(f)
    
    # ヘッダー(最初の1行)を読み飛ばす
    # 戻り値としてヘッダー行が返るので、必要なら変数に保存します
    header = next(reader)
    
    print(f"ヘッダー: {header}")
    print("-" * 20)
    print("--- データのみ処理 ---")
    
    # 既に1行目が消費されているため、ループは2行目から始まります
    for row in reader:
        product_name = row[1]
        price = row[2]
        print(f"{product_name} は {price} 円です。")

実行結果

ヘッダー: ['ID', '商品名', '価格']
--------------------
--- データのみ処理 ---
Apple は 120 円です。
Orange は 80 円です。
Banana は 150 円です。

解説

  • newline="": open() 関数でCSVを開く際、この引数を指定しないと、Windows環境などで改行コードの処理がうまくいかず、空行が含まれてしまうなどの問題が起きる可能性があります。
  • next(reader): reader はイテレータ(順番にデータを取り出す仕組み)です。next() を1回呼ぶと「現在の行を取得して、読み込み位置を次の行へ進める」という動作をします。これにより、続く for ループでは次の行から処理が開始されます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次