Python超初心者講座 / 第12回

CSVやExcelを扱う

表データをPythonで読む・書く

この回の目的
業務でPythonを使うなら、CSVやExcelの処理は非常に重要です。 名簿、売上表、点検記録、ログ、集計表など、多くのデータは表形式で扱われます。

CSVとは何か

CSVは、カンマ区切りでデータを保存するシンプルな形式です。 Excelでも開けますが、中身はただのテキストです。
name,age
田中,20
佐藤,30
構造が単純なので、Pythonから扱いやすい形式です。

標準ライブラリcsvで読む

import csv

with open("members.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
1行ずつリストとして読み込まれます。

DictReaderで読む

列名を使って読みたい場合は DictReader が便利です。
import csv

with open("members.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row["name"], row["age"])
列名でアクセスできるので、実務ではこちらの方が読みやすいことが多いです。

CSVを書き出す

import csv

rows = [
    ["name", "age"],
    ["田中", 20],
    ["佐藤", 30],
]

with open("output.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(rows)
Windowsでは newline="" を付けないと空行が増えることがあります。

Excelを扱うopenpyxl

Excelファイルを扱うには openpyxl がよく使われます。
python -m pip install openpyxl
簡単な書き込み例です。
from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws["A1"] = "名前"
ws["B1"] = "年齢"
ws.append(["田中", 20])
ws.append(["佐藤", 30])

wb.save("members.xlsx")

pandasという選択肢

大量の表データを処理する場合は pandas が便利です。
python -m pip install pandas openpyxl
import pandas as pd

df = pd.read_csv("members.csv")
print(df)

df.to_excel("members.xlsx", index=False)
pandasは強力ですが、初心者はまずCSVの仕組みを理解してから使うとよいです。
練習
  1. 名前と年齢のCSVを作る
  2. Pythonで読み込んで表示する
  3. 30歳以上だけ表示する
  4. Excelファイルに書き出す
表データ処理ができると、Pythonは一気に業務ツールになります。
理解チェック
前の回へ 次の回へ