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スプレッドシートなどの他の保存形式も取り上げました。
✅ おさらい:書き込み方法まとめ
| 形式 | 主な方法 | 特徴 |
|---|---|---|
| CSV | csvモジュール、pandas | 軽量・シンプルで汎用性あり |
| Excel(.xlsx) | openpyxl、pandas | 装飾や複数シート対応、見た目が整えられる |
| JSON | jsonモジュール | ネストされたデータも保存できる |
| SQLite | sqlite3モジュール | データベース操作が可能、大量データに強い |
| スプレッドシート | gspreadなどの外部ライブラリ | クラウド連携、自動化、複数人での同時編集OK |
🧩 保存形式の選び方
- 簡単な表を保存したい → CSV
- Excelで資料を配りたい・整えたい → Excel
- 構造化されたデータを保存したい → JSON
- 本格的なデータベースとして活用したい → SQLite
- 社内共有・自動レポートに使いたい → Googleスプレッドシート

Pythonにはいろいろな保存方法があるからこそ、**「何のために保存したいのか?」**を明確にすると、最適な手段が見えてきます。
この機会にぜひ、自分の目的にぴったりな方法を見つけて、日々の業務や学習をもっとラクにしていきましょう!
よくある質問(Q&A)
- QCSVとExcelの違いって何?どちらを使えばいいの?
- A
CSVはただのテキストファイルで、軽量で汎用性があります。一方、**Excel(.xlsx)**は装飾や数式、複数シートなどの機能を持つ高機能なファイル形式です。
- 見た目を整えたい → Excel
- 軽くてシンプルな保存がしたい → CSV
どちらを選ぶかは「誰に渡すか・どう使うか」で決めましょう。
- Qpandasで保存したCSVファイルが文字化けします…
- A
to_csv()で日本語を含むCSVを保存する場合、**encoding="utf-8-sig"**と指定すると、Excelでの文字化けを防げます。df.to_csv("file.csv", index=False, encoding="utf-8-sig")
- QExcelファイルに追記したい場合はどうすればいい?
- 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の商品ページをご確認ください。