スポンサーリンク

PythonでCSVやExcelに書き込む方法|スプレッドシート以外の選択肢も!

自動化スクリプト

1. はじめに

Pythonでデータを処理できるようになると、「処理した結果をどこかに保存したいな」と思うことが増えてきますよね。
そんなとき、よく使われるのがCSVファイルや**Excelファイル(.xlsx)**です。

たとえば、次のようなシーンで役立ちます:

  • Webスクレイピングで取得したデータをCSVにまとめたい
  • 毎月の売上データをExcelに自動で出力したい
  • 社内で共有するために決まったフォーマットのファイルを生成したい

Googleスプレッドシートも便利ですが、「インターネット接続がない環境」や「社内でファイル共有がメインの職場」では、ローカルファイル形式(CSVやExcel)の方が使い勝手がいいことも多いです。


また、CSVやExcelはWindowsやMacなど**どの環境でも読み書きできる「万能フォーマット」**です。
Pythonから簡単に出力できるので、自動化や業務効率化にもピッタリなんですよ。

この記事では、Python初心者でも迷わず使えるように、次のポイントをやさしく解説していきます。

  • csvモジュールを使ってCSVファイルに書き込む方法
  • openpyxlを使ってExcelファイルに書き込む方法
  • pandasを使った効率的なデータ出力の方法
  • CSV・Excel以外の選択肢(JSONやSQLiteなど)

「スプレッドシート以外の選択肢も知りたい!」という方にもおすすめの内容になっています。
それではさっそく、CSVファイルの書き込みから見ていきましょう!




2-1. CSVとは?用途と特徴

まずはCSVについてざっくり説明しておきましょう!

CSV(カンマ区切り値/Comma-Separated Values)ファイルとは、データをカンマ(,)で区切って並べたテキストファイルのことです。
拡張子は「.csv」で、テキストエディタでもExcelでも簡単に開くことができます。

たとえば、次のような形式がCSVです:

名前,年齢,職業
田中太郎,28,エンジニア
佐藤花子,35,デザイナー

✅ CSVのメリット

  • ファイルサイズが軽い:中身はただのテキストなので軽量。
  • 読みやすい&扱いやすい:エクセルやGoogleスプレッドシートで開ける。
  • 他システムとの連携がしやすい:多くのアプリやサービスがCSVをサポート。

🚫 CSVの注意点

  • セルの結合やグラフなどExcelの高度な機能は使えない
  • カンマや改行が入ったデータはエスケープ処理が必要になることもある

つまり、「シンプルなデータ保存ややり取りには最適だけど、装飾はできない」というのがCSVの特徴です。
次は、このCSVファイルにPythonで書き込む基本の方法を解説します!




2-2. csvモジュールでの書き込み手順

Pythonには、CSVファイルを扱うための標準モジュール csv が用意されています。
つまり、追加でライブラリをインストールしなくてもすぐに使えるんです!

ここでは、CSVファイルにデータを書き込む基本的な方法を紹介します。


🔰 サンプルコード:CSVファイルに書き込む

import csv

# 書き込むデータ(リストのリスト形式)
data = [
["名前", "年齢", "職業"],
["田中太郎", 28, "エンジニア"],
["佐藤花子", 35, "デザイナー"]
]

# ファイルを開いて書き込む
with open("sample.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerows(data)

📝 コードの解説

  • open("sample.csv", "w", newline="", encoding="utf-8"):
    CSVファイルを「書き込みモード(w)」で開いています。文字コードは日本語対応のutf-8
    newline=""は、Windows環境で改行が2重になるのを防ぐための対策です。
  • csv.writer(file):
    writerオブジェクトを作成します。これを使ってデータを書き込みます。
  • writer.writerows(data):
    リストのリスト形式(2次元)で渡すと、1行ずつ自動で書き込んでくれる便利な関数です。

📂 出力されるCSVファイルの中身

名前,年齢,職業
田中太郎,28,エンジニア
佐藤花子,35,デザイナー

Excelで開けば、ちゃんと行と列に分かれた表形式で表示されますよ!




3-1. Excel操作にはopenpyxlが便利

CSVはとってもシンプルで使いやすいんですが、
「セルの装飾をしたい」「複数のシートを使いたい」「関数やグラフも含めたい」
──そんなときに出番なのがExcel(.xlsx)形式です!

PythonでExcelファイルを操作するには、openpyxlというライブラリがよく使われます。
Microsoft Excel 2007以降で使われている「.xlsx形式」に対応していて、セルの装飾や数式の設定もできます。


✅ openpyxlの特徴

  • Excelのセルに自由にデータを書き込める
  • 行や列の挿入/削除、スタイル変更、グラフ挿入なども可能
  • .xlsxファイルを新規作成も編集もOK!
  • Excelをインストールしていなくても使える

🔧 openpyxlのインストール方法

まずは、まだインストールしていない場合は次のコマンドで導入しましょう。

pip install openpyxl

数秒で完了します!




3-2. openpyxlを使った書き込み手順

openpyxlを使えば、Excelのセルに自由にデータを書き込むことができます。
ここでは、新しいExcelファイルを作って、データを入力して保存するまでの流れを見ていきましょう。


🔰 サンプルコード:Excelファイルに書き込み

from openpyxl import Workbook

# 新しいワークブック(Excelファイル)を作成
wb = Workbook()

# アクティブなワークシートを取得
ws = wb.active

# シート名を変更(任意)
ws.title = "社員名簿"

# データの書き込み(行単位で指定)
ws.append(["名前", "年齢", "部署"])
ws.append(["田中太郎", 28, "開発"])
ws.append(["佐藤花子", 35, "デザイン"])

# ファイルとして保存
wb.save("sample.xlsx")

📝 コードの解説

  • Workbook():新しいExcelファイル(ワークブック)を作成します。
  • wb.active:デフォルトのワークシート(Sheet)を取得します。
  • ws.append(...):行単位でデータを追加できます。リスト形式で渡すだけでOK!
  • wb.save("ファイル名.xlsx"):Excelファイルとして保存します。

📁 実際の出力ファイルのイメージ

名前年齢部署
田中太郎28開発
佐藤花子35デザイン

このファイルをExcelで開くと、ちゃんと整った表になっています!


🧠 ワンポイントアドバイス

複数のシートに書き込みたいときはこうします:

ws2 = wb.create_sheet(title="売上データ")
ws2.append(["日付", "金額"])

Excelらしい機能もいろいろ追加できますが、まずはこの基本をマスターしておけばOKです!




4. pandasを使ってCSVやExcelに書き込む方法(応用編)

ここまで標準モジュールやopenpyxlを使った方法を紹介してきましたが、
**もっとスマートにデータを書き込みたい!**という方におすすめなのが「pandas(パンダス)」です。

pandasを使えば、データを**DataFrame(表形式のデータ構造)**にまとめて、
たった1行でCSVやExcelファイルに書き出すことができます!


✅ pandasのインストール

まだインストールしていない場合は、次のコマンドで導入しておきましょう:

pip install pandas openpyxl

※Excel出力のためにopenpyxlも一緒に入れておきます。


🔰 サンプルコード:CSVに書き出す

import pandas as pd

# データフレームの作成
data = {
"名前": ["田中太郎", "佐藤花子"],
"年齢": [28, 35],
"部署": ["開発", "デザイン"]
}
df = pd.DataFrame(data)

# CSVファイルに出力
df.to_csv("pandas_sample.csv", index=False, encoding="utf-8")

📝 ポイント解説(CSV出力)

  • index=False:行番号(インデックス)をCSVに含めないようにするオプション
  • encoding="utf-8":文字化け防止(特に日本語のデータを扱うとき)

🔰 サンプルコード:Excelに書き出す

# Excelファイルに出力
df.to_excel("pandas_sample.xlsx", index=False)

たったこれだけで、Excelファイルが出力されます。
複雑な書式設定はできませんが、「とりあえず表にして保存したい!」という用途ならこれで十分です。


🔄 上書き・追記の注意点

  • to_csv()to_excel()ファイルを上書き保存します。
  • 追記(append)したい場合は、いったんファイルを読み込んでからconcat()などで合成して保存しましょう。
# ファイルを読み込み、既存データに新しいデータを結合
existing = pd.read_csv("pandas_sample.csv")
new_data = pd.DataFrame({"名前": ["山田太一"], "年齢": [30], "部署": ["営業"]})
combined = pd.concat([existing, new_data], ignore_index=True)
combined.to_csv("pandas_sample.csv", index=False, encoding="utf-8")

pandasはこのように、データ分析にも保存処理にも便利な「万能ツール」です。




5. CSV・Excel以外の書き込み先はある?

ここまで、CSVとExcelへの書き込み方法を紹介してきましたが、
実はPythonではそれ以外にもデータの保存先がたくさんあるんです!

「CSVやExcelだと扱いづらいな…」と思ったときは、ぜひ以下の選択肢も検討してみてください。


✅ JSONファイル|構造化データに便利

JSON(JavaScript Object Notation)は、辞書やリストのようなネストされたデータ構造をそのまま保存できるのが特徴。

import json

data = {"名前": "田中太郎", "年齢": 28, "部署": "開発"}

with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
  • 見た目がきれいで読みやすい
  • APIやWebサービスと相性が良い
  • Excelでの編集はできないが、プログラム間でのやり取りに最適

✅ SQLite|軽量なデータベースに保存

もしデータがどんどん増えるような場合や、検索やフィルタ機能が必要なら、**SQLite(組み込み型データベース)**が便利です。

import sqlite3

conn = sqlite3.connect("example.db")
cur = conn.cursor()

cur.execute("CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER, department TEXT)")
cur.execute("INSERT INTO users VALUES (?, ?, ?)", ("田中太郎", 28, "開発"))

conn.commit()
conn.close()
  • データベース操作が可能(検索、更新、削除)
  • .dbファイル1つで完結する
  • Pythonからの操作もとても簡単

✅ Googleスプレッドシート|クラウド共有に最適

「複数人でリアルタイムに編集したい」「社内で共有したい」という場合は、Googleスプレッドシートが有力な選択肢。

👉 詳しくは:PythonでGoogleスプレッドシートを操作する方法をご覧ください!


🧭 選択肢のまとめ

保存先特徴向いている用途
CSVシンプル・軽量表形式の基本データの保存
Excel(xlsx)装飾やシート分けができる見た目も大事な帳票やレポート
JSONネスト構造に対応構造化データの保存やAPI連携
SQLite検索や管理がしやすいアプリ内データ保存や大量データ管理
スプレッドシートクラウドで共有・自動化しやすい社内共有、自動レポート生成

目的や環境に合わせて、最適な保存形式を選ぶことが業務効率化のカギになります!




6. まとめ|目的に合った保存形式を選ぼう

この記事では、PythonでデータをCSVやExcelに書き込む方法を中心に紹介してきました。
さらに、JSONやSQLite、Googleスプレッドシートなどの他の保存形式も取り上げました。


✅ おさらい:書き込み方法まとめ

形式主な方法特徴
CSVcsvモジュール、pandas軽量・シンプルで汎用性あり
Excel(.xlsx)openpyxlpandas装飾や複数シート対応、見た目が整えられる
JSONjsonモジュールネストされたデータも保存できる
SQLitesqlite3モジュールデータベース操作が可能、大量データに強い
スプレッドシートgspreadなどの外部ライブラリクラウド連携、自動化、複数人での同時編集OK

🧩 保存形式の選び方

  • 簡単な表を保存したい → CSV
  • Excelで資料を配りたい・整えたい → Excel
  • 構造化されたデータを保存したい → JSON
  • 本格的なデータベースとして活用したい → SQLite
  • 社内共有・自動レポートに使いたい → Googleスプレッドシート

Pythonにはいろいろな保存方法があるからこそ、**「何のために保存したいのか?」**を明確にすると、最適な手段が見えてきます。

この機会にぜひ、自分の目的にぴったりな方法を見つけて、日々の業務や学習をもっとラクにしていきましょう!


よくある質問(Q&A)

Q
CSVとExcelの違いって何?どちらを使えばいいの?
A

CSVはただのテキストファイルで、軽量で汎用性があります。一方、**Excel(.xlsx)**は装飾や数式、複数シートなどの機能を持つ高機能なファイル形式です。

  • 見た目を整えたい → Excel
  • 軽くてシンプルな保存がしたい → CSV

どちらを選ぶかは「誰に渡すか・どう使うか」で決めましょう。

Q
pandasで保存したCSVファイルが文字化けします…
A

to_csv()で日本語を含むCSVを保存する場合、**encoding="utf-8-sig"**と指定すると、Excelでの文字化けを防げます。

df.to_csv("file.csv", index=False, encoding="utf-8-sig")
Q
Excelファイルに追記したい場合はどうすればいい?
A

openpyxlで既存のExcelファイルを開いて、そこにデータを追加できます:

from openpyxl import load_workbook

wb = load_workbook("sample.xlsx")
ws = wb.active
ws.append(["新しい行のデータ"])
wb.save("sample.xlsx")

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク