PythonでCSVファイルを扱う方法|初心者向けに読み込み・書き込みをやさしく解説

Pythonは、ファイルや画像だけでなく、表形式のデータを扱うこともできます。

その代表的なファイル形式が「CSV」です。

CSVは、Excelなどで扱う表形式のデータを保存するときにも利用されます。

例えば、

  • 商品リスト
  • 顧客リスト
  • 売上データ
  • アクセスデータ
  • 商品価格の一覧
  • アンケート結果

など、さまざまなデータを保存できます。

今回は、Pythonを使ってCSVファイルを読み込んだり、新しいCSVファイルを作ったりする方法を、初心者向けにやさしく解説します。


CSVとは?

CSVは、Comma-Separated Valuesの略です。

日本語にすると「カンマで区切られた値」という意味になります。

例えば、次のようなデータがあるとします。

商品名,価格,在庫
りんご,150,20
みかん,120,35
バナナ,180,15

それぞれの項目が「,(カンマ)」で区切られています。

表にすると、

商品名価格在庫
りんご15020
みかん12035
バナナ18015

となります。

CSVは、このような表形式のデータをシンプルなテキストとして保存できるファイル形式です。


CSVはExcelでも開ける

CSVファイルは、Excelなどの表計算ソフトでも開くことができます。

例えば、

商品名,価格,在庫
りんご,150,20
みかん,120,35
バナナ,180,15

というCSVファイルをExcelで開くと、行と列に分かれた表として表示できます。

そのため、

「Pythonでデータを処理する → Excelで確認する」

といった使い方もできます。


PythonでCSVを扱う

Pythonには、CSVファイルを扱うためのcsvモジュールが標準で用意されています。

そのため、今回の基本的な処理では、追加のライブラリをインストールする必要はありません。

まず、

import csv

と書くことで、CSVを扱えるようになります。


CSVファイルを読み込んでみよう

まずは、CSVファイルをPythonで読み込んでみましょう。

次のようなCSVファイルを用意します。

products.csv

中身は次のようにします。

商品名,価格,在庫
りんご,150,20
みかん,120,35
バナナ,180,15

Pythonのプログラムは次のようになります。

import csv

with open("products.csv", encoding="utf-8") as file:
    reader = csv.reader(file)

    for row in reader:
        print(row)

実行すると、

['商品名', '価格', '在庫']
['りんご', '150', '20']
['みかん', '120', '35']
['バナナ', '180', '15']

のように表示されます。


import csvとは?

最初の、

import csv

は、PythonのCSV機能を読み込んでいます。

csvはPythonに標準で用意されているモジュールなので、基本的には追加インストールする必要はありません。


open()でCSVファイルを開く

次の部分を見てみましょう。

with open("products.csv", encoding="utf-8") as file:

ここでは、

products.csv

というファイルを開いています。

encoding="utf-8"は、文字コードを指定しています。

日本語を含むCSVを扱う場合、文字コードが合わないと文字化けすることがあります。


csv.reader()でデータを読み込む

次に、

reader = csv.reader(file)

としています。

これによって、CSVのデータをPythonで読み込めるようになります。

そして、

for row in reader:
    print(row)

で、CSVの各行を順番に処理しています。


rowには1行分のデータが入る

例えば、

りんご,150,20

という行を読み込むと、

['りんご', '150', '20']

のようになります。

つまり、

row[0]

は、

りんご

で、

row[1]

は、

150

です。

row[2]

なら、

20

になります。

Pythonでは、このようにデータを番号で取り出すことができます。


商品名だけを表示してみよう

例えば、商品名だけを表示したい場合は、

import csv

with open("products.csv", encoding="utf-8") as file:
    reader = csv.reader(file)

    for row in reader:
        print(row[0])

とします。

実行すると、

商品名
りんご
みかん
バナナ

と表示されます。


ヘッダーを除外する

CSVの最初の行には、

商品名,価格,在庫

という項目名が入っています。

このような最初の行を「ヘッダー」と呼びます。

データだけを処理したい場合は、ヘッダーを飛ばすこともできます。

import csv

with open("products.csv", encoding="utf-8") as file:
    reader = csv.reader(file)

    next(reader)

    for row in reader:
        print(row)

next(reader)によって、最初の1行を読み飛ばしています。


CSVにデータを書き込む

CSVは読み込むだけではありません。

Pythonから新しいCSVファイルを作ることもできます。

例えば、次のプログラムです。

import csv

data = [
    ["商品名", "価格", "在庫"],
    ["りんご", 150, 20],
    ["みかん", 120, 35],
    ["バナナ", 180, 15]
]

with open("new_products.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)

    writer.writerows(data)

print("CSVファイルを作成しました!")

実行すると、

new_products.csv

というファイルが作られます。

中身は、

商品名,価格,在庫
りんご,150,20
みかん,120,35
バナナ,180,15

となります。


dataには表のデータを入れている

ここでは、

data = [
    ["商品名", "価格", "在庫"],
    ["りんご", 150, 20],
    ["みかん", 120, 35],
    ["バナナ", 180, 15]
]

というデータを作っています。

Pythonでは、[]を使って複数のデータをまとめることができます。

今回は、

1行目
↓
商品名・価格・在庫

2行目
↓
りんご・150・20

3行目
↓
みかん・120・35

という構造になっています。


csv.writer()でCSVを書き込む

次に、

writer = csv.writer(file)

としています。

これは、PythonのデータをCSVファイルに書き込むための機能です。

そして、

writer.writerows(data)

で、dataに入っているデータをまとめてCSVに書き込んでいます。


CSVを使って簡単な集計をしてみよう

CSVを読み込んだら、そのデータを使って計算することもできます。

例えば、商品価格の合計を計算してみましょう。

import csv

total = 0

with open("products.csv", encoding="utf-8") as file:
    reader = csv.reader(file)

    next(reader)

    for row in reader:
        price = int(row[1])
        total += price

print("価格の合計:", total)

実行すると、

価格の合計: 450

と表示されます。


int()で文字列を数字に変換する

ここで、

price = int(row[1])

というコードが出てきます。

CSVから読み込んだデータは、基本的に文字列として扱われます。

例えば、

150

も、そのままでは文字列です。

そこで、

int("150")

とすることで、整数の150として扱えるようになります。

これによって、

total += price

のような計算ができるようになります。


PythonでCSVを扱うと何ができる?

CSVをPythonで扱えるようになると、さまざまなデータ処理を自動化できます。

例えば、

  • CSVのデータを読み込む
  • 必要なデータだけ取り出す
  • 数値を集計する
  • 条件に合うデータを探す
  • 新しいCSVを作る
  • 複数のCSVをまとめる
  • データを別の形式に変換する

といった処理ができます。

大量のデータを手作業で処理する代わりに、Pythonに任せられるわけです。


CSVとPythonの組み合わせは自動化と相性がいい

前回の記事では、Pythonを使ってファイル名をまとめて変更したり、画像を一括処理したりしました。

CSVを扱えるようになると、さらにできることが増えます。

例えば、

CSVファイル
   ↓
Pythonで読み込む
   ↓
必要なデータを取り出す
   ↓
計算・整理・加工
   ↓
新しいCSVとして保存

という流れを作れます。

つまりPythonを、

「大量のデータを自動的に処理する道具」

として使えるようになります。


Excelを使っている人にもPythonは役立つ

CSVはExcelなどの表計算ソフトでも扱えるため、

「ExcelがあるならPythonは必要ないのでは?」

と思うかもしれません。

もちろん、少量のデータならExcelだけで十分なこともあります。

しかし、同じ作業を何度も繰り返す場合には、Pythonが便利です。

例えば、

毎回同じCSVを読み込む
↓
不要なデータを削除
↓
必要なデータだけ残す
↓
合計を計算
↓
新しいCSVを作る

という作業を毎回手作業で行うのは面倒です。

Pythonなら、その手順そのものをプログラムにできます。


最初は簡単なデータ処理から始めよう

CSVを扱うプログラムを見ると、最初は難しそうに感じるかもしれません。

しかし、基本的な考え方はシンプルです。

ファイルを開く
↓
データを読み込む
↓
1行ずつ処理する
↓
必要なら計算する
↓
結果を保存する

まずはこの流れを理解するところから始めてみましょう。


今回覚えたPythonの機能

今回使用した主な機能をまとめます。

コード役割
import csvCSVを扱う機能を読み込む
open()ファイルを開く
csv.reader()CSVを読み込む
forデータを繰り返し処理する
next()次のデータを取得する
int()文字列を整数に変換する
csv.writer()CSVを書き込む
writerows()複数行をまとめて書き込む

これらを組み合わせることで、CSVデータの読み込みから加工、保存までをPythonで行えるようになります。


まとめ

今回は、PythonでCSVファイルを扱う方法を紹介しました。

ポイントをまとめると、

  • CSVは表形式のデータを保存できる
  • PythonにはCSVを扱う標準機能がある
  • csv.reader()でCSVを読み込める
  • csv.writer()でCSVを作成できる
  • for文でデータを1行ずつ処理できる
  • CSVのデータを計算することもできる
  • 大量のデータ処理を自動化できる

ということです。

Pythonは、ゲームや画像処理だけでなく、データを扱うための道具としても利用できます。

「毎回ExcelやCSVを開いて、同じような作業をしている」

という人は、その作業をPythonで自動化できないか考えてみるとよいでしょう。

小さな作業から始めるだけでも、Pythonが単なる「プログラミングの勉強」ではなく、実際の作業を楽にするための道具として見えてきます。

関連記事
・WindowsにPythonをインストールする方法【初心者向け】
タイトルとURLをコピーしました