Pythonは、ファイルや画像だけでなく、表形式のデータを扱うこともできます。
その代表的なファイル形式が「CSV」です。
CSVは、Excelなどで扱う表形式のデータを保存するときにも利用されます。
例えば、
- 商品リスト
- 顧客リスト
- 売上データ
- アクセスデータ
- 商品価格の一覧
- アンケート結果
など、さまざまなデータを保存できます。
今回は、Pythonを使ってCSVファイルを読み込んだり、新しいCSVファイルを作ったりする方法を、初心者向けにやさしく解説します。
- CSVとは?
- CSVはExcelでも開ける
- PythonでCSVを扱う
- CSVファイルを読み込んでみよう
- import csvとは?
- open()でCSVファイルを開く
- csv.reader()でデータを読み込む
- rowには1行分のデータが入る
- 商品名だけを表示してみよう
- ヘッダーを除外する
- CSVにデータを書き込む
- dataには表のデータを入れている
- csv.writer()でCSVを書き込む
- CSVを使って簡単な集計をしてみよう
- int()で文字列を数字に変換する
- PythonでCSVを扱うと何ができる?
- CSVとPythonの組み合わせは自動化と相性がいい
- Excelを使っている人にもPythonは役立つ
- 最初は簡単なデータ処理から始めよう
- 今回覚えたPythonの機能
- まとめ
CSVとは?
CSVは、Comma-Separated Valuesの略です。
日本語にすると「カンマで区切られた値」という意味になります。
例えば、次のようなデータがあるとします。
商品名,価格,在庫
りんご,150,20
みかん,120,35
バナナ,180,15
それぞれの項目が「,(カンマ)」で区切られています。
表にすると、
| 商品名 | 価格 | 在庫 |
|---|---|---|
| りんご | 150 | 20 |
| みかん | 120 | 35 |
| バナナ | 180 | 15 |
となります。
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 csv | CSVを扱う機能を読み込む |
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が単なる「プログラミングの勉強」ではなく、実際の作業を楽にするための道具として見えてきます。

