ExcelやアプリからエクスポートしたCSVファイルをPythonで処理したい、という場面は仕事でも学習でもよくあります。標準ライブラリの csv モジュールを使えば、追加インストール不要で読み書きができます。
この記事では、csv モジュールの基本、reader と DictReader の違い、書き込み、文字化けを避けるコツまでを、実行結果つきで初心者向けに解説します。
CSVとは?
CSVは「カンマ区切りのテキストファイル」です。以下のような内容を sample.csv として保存したものとして、この記事の例を進めます。
name,age,city
田中,28,東京
佐藤,34,大阪
鈴木,22,名古屋csv.reader で読み込む
import csv
with open("sample.csv", encoding="utf-8", newline="") as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['name', 'age', 'city']
# ['田中', '28', '東京']
# ['佐藤', '34', '大阪']
# ['鈴木', '22', '名古屋']1行ごとにリストとして取り出せます。ここで注意したいのは、age も文字列として読み込まれる点です。数値として計算したいときは型変換(int・str・float)が必要になります。ファイルを安全に開くための with についてはwith構文の記事を参考にしてください。
csv.DictReader で列名を使って読む
import csv
with open("sample.csv", encoding="utf-8", newline="") as f:
for row in csv.DictReader(f):
print(row["name"], int(row["age"]), row["city"])
# 田中 28 東京
# 佐藤 34 大阪
# 鈴木 22 名古屋DictReader は、1行目をヘッダーとして、各行を辞書で返します。列の順番が変わっても壊れにくいので、実務ではこちらがよく使われます。辞書の基本はPythonの辞書(dict)の使い方で確認できます。
データ処理を仕事にしたい方は、独学の先も見据えておくと選択肢が広がります。プログラミングスクールの選び方と比較軸もあわせて確認してみてください。
csv.writer で書き込む
import csv
rows = [
["name", "age", "city"],
["高橋", 41, "福岡"],
["伊藤", 29, "札幌"],
]
with open("out.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerows(rows)newline=”” を指定するのは、Windowsで空行が入ってしまうのを防ぐためのお約束です。辞書で書きたいときは csv.DictWriter を使います。
import csv
with open("out2.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age"])
writer.writeheader()
writer.writerow({"name": "高橋", "age": 41})
writer.writerow({"name": "伊藤", "age": 29})文字化けしたときの対処
- Excelで保存したCSVは Shift_JIS(cp932)のことが多く、encoding=”cp932″ を指定する
- Excelで開く前提で出力するなら encoding=”utf-8-sig”(BOM付きUTF-8)にする
- どの文字コードか分からないときは、まずテキストエディタで開いて確認する
もっと効率的にPythonを学びたい人へ
CSVの集計や加工は、業務効率化の入り口としてとても実用的です。「自分の仕事で使える形にしたい」という方は、マンツーマンで相談できるスクールを使うと近道になります。
Winスクールの「Python Winner」は、マンツーマン指導で未経験からPythonを学べ、転職サポートや無料カウンセリングにも対応しています。まずは無料カウンセリングで、自分に合うか確かめてみてはいかがでしょうか。
※本記事には広告(アフィリエイトリンク)を含みます。
Pythonプログラミング|マンツーマンレッスンで初めてをプロに育てる【Python Winner】![]()
他のスクールとも比べたい方は、スクールの比較記事もあわせてご覧ください。資格取得を目指す方はPython3エンジニア認定基礎試験の参考書比較も参考になります。
まとめ
- csv モジュールは標準ライブラリなので追加インストール不要
- reader はリスト、DictReader は辞書で行を読める
- 読み込んだ値は文字列なので、計算には型変換が必要
- 書き込みは writer / DictWriter。open には newline=”” を付ける
- 文字化けは encoding(cp932、utf-8-sig)で対処する
まずは小さなCSVを作って、DictReader で読み込むところから試してみましょう。
ナノトイラボ 
