[Python] Excelファイルを作成する方法

PythonでExcelファイルを作成するには、主にopenpyxlpandasといったライブラリを使用します。

openpyxlはExcelファイルの読み書きに特化しており、Workbookクラスを使って新しいExcelファイルを作成できます。

一方、pandasはデータフレームをExcelに書き出すために便利で、to_excel()メソッドを使用します。

どちらの方法でも、Excelファイルは.xlsx形式で保存されます。

この記事でわかること
  • PythonでExcelファイルを作成する方法
  • openpyxlとpandasの使い分け
  • 大規模データの処理の注意点
  • Excelファイルの自動化手法
  • 効率的なファイル管理の方法

目次から探す

PythonでExcelファイルを作成するための準備

必要なライブラリのインストール

PythonでExcelファイルを作成するためには、主にopenpyxlpandasというライブラリを使用します。

これらのライブラリは、Excelファイルの作成や編集を簡単に行うことができます。

以下のコマンドを使用して、必要なライブラリをインストールします。

pip install openpyxl pandas

openpyxlとpandasの違い

openpyxlpandasは、Excelファイルを扱うための異なるライブラリです。

それぞれの特徴を以下の表にまとめました。

スクロールできます
特徴openpyxlpandas
主な用途Excelファイルの作成・編集データ分析・操作
データ構造ワークブック、シート、セルDataFrame
数式のサポートあり限定的(主に計算結果)
グラフの作成あり限定的(主にデータ可視化)
複数シートの操作可能可能(DataFrameを複数シートに書き出し)

Excelファイルの基本構造

Excelファイルは、以下の基本的な構造を持っています。

  • ワークブック: Excelファイル全体を指します。
  • シート: ワークブック内の個々のページで、データを格納するための領域です。
  • セル: シート内のデータを格納する最小単位で、行と列の交差点に位置します。

Excelファイルは、これらの要素を組み合わせてデータを整理し、視覚的に表示するための強力なツールです。

Pythonを使用することで、これらの要素をプログラムから操作することが可能になります。

openpyxlを使ったExcelファイルの作成

Workbookクラスで新しいExcelファイルを作成

openpyxlを使用して新しいExcelファイルを作成するには、Workbookクラスを利用します。

以下のサンプルコードでは、新しいExcelファイルを作成し、デフォルトのシートを追加します。

from openpyxl import Workbook
# 新しいワークブックを作成
workbook = Workbook()
# デフォルトのシートを取得
sheet = workbook.active
sheet.title = "新しいシート"

シートの追加・削除

新しいシートを追加したり、既存のシートを削除することも可能です。

以下のコードでは、シートの追加と削除を行います。

# 新しいシートを追加
new_sheet = workbook.create_sheet(title="追加シート")
# シートの削除
workbook.remove(sheet)  # デフォルトのシートを削除

セルへのデータ書き込み

セルにデータを書き込むには、セルの位置を指定して値を代入します。

以下のサンプルコードでは、特定のセルにデータを書き込みます。

# セルA1にデータを書き込む
new_sheet['A1'] = "こんにちは"
new_sheet['B1'] = 12345

セルの書式設定

セルの書式を設定することで、見た目を整えることができます。

以下のコードでは、フォントのスタイルを変更します。

from openpyxl.styles import Font
# フォントスタイルを設定
new_sheet['A1'].font = Font(bold=True, color="FF0000")  # 太字、赤色

Excelファイルの保存

作成したExcelファイルは、saveメソッドを使用して保存します。

以下のコードでは、ファイル名を指定して保存します。

# Excelファイルを保存
workbook.save("sample.xlsx")

既存のExcelファイルの読み込みと編集

既存のExcelファイルを読み込むには、load_workbook関数を使用します。

以下のサンプルコードでは、既存のファイルを読み込み、特定のセルの値を変更します。

from openpyxl import load_workbook
# 既存のExcelファイルを読み込む
workbook = load_workbook("sample.xlsx")
sheet = workbook.active
# セルA1の値を変更
sheet['A1'] = "こんにちは、世界!"
# 変更を保存
workbook.save("sample.xlsx")

このように、openpyxlを使用することで、Excelファイルの作成、編集、保存が簡単に行えます。

pandasを使ったExcelファイルの作成

DataFrameの作成

pandasを使用してExcelファイルを作成するためには、まずDataFrameを作成します。

DataFrameは、表形式のデータを扱うためのデータ構造です。

以下のサンプルコードでは、簡単なデータを持つDataFrameを作成します。

import pandas as pd
# データを辞書形式で定義
data = {
    "名前": ["田中", "鈴木", "佐藤"],
    "年齢": [25, 30, 22],
    "職業": ["エンジニア", "デザイナー", "マーケティング"]
}
# DataFrameを作成
df = pd.DataFrame(data)

to_excel()メソッドでExcelファイルに書き出す

作成したDataFrameをExcelファイルに書き出すには、to_excel()メソッドを使用します。

以下のコードでは、DataFrameをExcelファイルに保存します。

# Excelファイルに書き出す
df.to_excel("output.xlsx", index=False)  # index=Falseでインデックスを保存しない

複数のシートにデータを書き込む

pandasを使用すると、複数のシートにデータを書き込むことも可能です。

以下のサンプルコードでは、異なるDataFrameを異なるシートに書き込みます。

# 追加のデータを作成
data2 = {
    "商品": ["リンゴ", "バナナ", "オレンジ"],
    "価格": [100, 150, 200]
}
df2 = pd.DataFrame(data2)
# Excelファイルに複数のシートを書き込む
with pd.ExcelWriter("output_multiple_sheets.xlsx") as writer:
    df.to_excel(writer, sheet_name="ユーザー情報", index=False)
    df2.to_excel(writer, sheet_name="商品情報", index=False)

Excelファイルの読み込みと編集

既存のExcelファイルを読み込むには、read_excel()メソッドを使用します。

以下のコードでは、Excelファイルを読み込み、特定の列を編集します。

# Excelファイルを読み込む
df_loaded = pd.read_excel("output.xlsx")
# 年齢を1歳増やす
df_loaded["年齢"] += 1
# 編集したデータを再度保存
df_loaded.to_excel("output_updated.xlsx", index=False)

pandasとopenpyxlの併用

pandasopenpyxlを併用することで、より高度なExcelファイルの操作が可能になります。

例えば、pandasでデータを処理し、openpyxlで書式設定を行うことができます。

以下のサンプルコードでは、pandasでデータを作成し、openpyxlで書式設定を行います。

import openpyxl
from openpyxl.styles import Font
# DataFrameを作成
data = {
    "名前": ["田中", "鈴木", "佐藤"],
    "年齢": [25, 30, 22]
}
df = pd.DataFrame(data)
# Excelファイルに書き出す
df.to_excel("combined_output.xlsx", index=False)
# openpyxlで書式設定
workbook = openpyxl.load_workbook("combined_output.xlsx")
sheet = workbook.active
# セルA1のフォントを太字に設定
sheet['A1'].font = Font(bold=True)
# 変更を保存
workbook.save("combined_output.xlsx")

このように、pandasを使用することで、Excelファイルの作成や編集が簡単に行え、さらにopenpyxlと組み合わせることで、より柔軟な操作が可能になります。

Excelファイルの応用的な操作

グラフの作成と挿入

openpyxlを使用してExcelファイルにグラフを作成し、挿入することができます。

以下のサンプルコードでは、データを基に棒グラフを作成し、シートに挿入します。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# 新しいワークブックを作成
workbook = Workbook()
sheet = workbook.active
# データを追加
data = [
    ["商品", "売上"],
    ["リンゴ", 300],
    ["バナナ", 150],
    ["オレンジ", 200],
]
for row in data:
    sheet.append(row)
# グラフのデータ範囲を指定
data_ref = Reference(sheet, min_col=2, min_row=1, max_col=2, max_row=4)
categories_ref = Reference(sheet, min_col=1, min_row=2, max_row=4)
# 棒グラフを作成
chart = BarChart()
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(categories_ref)
chart.title = "商品別売上"
chart.x_axis.title = "商品"
chart.y_axis.title = "売上"
# グラフをシートに挿入
sheet.add_chart(chart, "E5")
# Excelファイルを保存
workbook.save("sales_chart.xlsx")

セルの結合とスタイル設定

セルを結合することで、見出しやタイトルを強調することができます。

以下のコードでは、セルの結合とスタイル設定を行います。

from openpyxl.styles import Alignment
# 新しいワークブックを作成
workbook = Workbook()
sheet = workbook.active
# セルを結合
sheet.merge_cells("A1:C1")
sheet["A1"] = "売上データ"
sheet["A1"].alignment = Alignment(horizontal="center")
# Excelファイルを保存
workbook.save("merged_cells.xlsx")

数式の挿入

Excelファイルに数式を挿入することも可能です。

以下のサンプルコードでは、合計を計算する数式をセルに挿入します。

# 新しいワークブックを作成
workbook = Workbook()
sheet = workbook.active
# データを追加
data = [100, 200, 300]
for i, value in enumerate(data, start=1):
    sheet[f"A{i}"] = value
# 合計を計算する数式を挿入
sheet["A5"] = "=SUM(A1:A3)"
# Excelファイルを保存
workbook.save("formula_example.xlsx")

画像の挿入

Excelファイルに画像を挿入することもできます。

以下のコードでは、画像をシートに挿入します。

from openpyxl.drawing.image import Image
# 新しいワークブックを作成
workbook = Workbook()
sheet = workbook.active
# 画像を挿入
img = Image("example_image.png")  # 画像ファイルのパスを指定
sheet.add_image(img, "B2")
# Excelファイルを保存
workbook.save("image_example.xlsx")

フィルタや並べ替えの適用

データにフィルタや並べ替えを適用することで、特定の情報を簡単に抽出できます。

以下のサンプルコードでは、データにフィルタを適用します。

# 新しいワークブックを作成
workbook = Workbook()
sheet = workbook.active
# データを追加
data = [
    ["商品", "売上"],
    ["リンゴ", 300],
    ["バナナ", 150],
    ["オレンジ", 200],
]
for row in data:
    sheet.append(row)
# フィルタを適用
sheet.auto_filter.ref = sheet.dimensions
# Excelファイルを保存
workbook.save("filter_example.xlsx")

このように、openpyxlを使用することで、Excelファイルに対してさまざまな応用的な操作を行うことができます。

これにより、データの可視化や整理がより効果的に行えるようになります。

大規模データの処理とExcelファイルの最適化

大量データを扱う際の注意点

大量のデータをExcelファイルで扱う際には、いくつかの注意点があります。

以下に主なポイントをまとめました。

  • パフォーマンスの低下: 大規模なデータセットを扱うと、Excelのパフォーマンスが低下することがあります。

特に、数万行以上のデータを含むファイルでは、操作が遅くなる可能性があります。

  • ファイルサイズの増加: データが増えると、Excelファイルのサイズも大きくなります。

これにより、保存や共有が難しくなることがあります。

  • メモリの制約: Excelはメモリを多く消費するため、特に古いコンピュータやメモリが少ない環境では、処理が困難になることがあります。
  • データの整合性: 大量のデータを扱う際には、データの整合性を保つことが重要です。

誤ったデータが混入すると、分析結果に影響を与える可能性があります。

メモリ効率を考慮したExcelファイルの作成

メモリ効率を考慮してExcelファイルを作成するための方法を以下に示します。

  • 必要なデータのみを保存: 不要な列や行を削除し、必要なデータのみをExcelファイルに保存することで、ファイルサイズを小さくできます。
  • データ型の最適化: データ型を適切に設定することで、メモリの使用量を削減できます。

例えば、整数型のデータを浮動小数点型で保存する必要はありません。

  • 分割保存: 大規模なデータセットは、複数のExcelファイルに分割して保存することを検討します。

これにより、各ファイルのサイズを小さく保つことができます。

  • ストリーミング処理: pandasread_csv()to_csv()メソッドchunksizeオプションを使用して、データをチャンク単位で処理することで、メモリの使用量を抑えることができます。

Excelファイルの圧縮保存

Excelファイルのサイズを小さくするために、圧縮保存を行うことができます。

以下の方法で圧縮保存が可能です。

  • ZIP形式で保存: ExcelファイルをZIP形式で圧縮することで、ファイルサイズを大幅に削減できます。

Pythonのzipfileモジュールを使用して、Excelファイルを圧縮することができます。

import zipfile
# ExcelファイルをZIP形式で圧縮
with zipfile.ZipFile("compressed_output.zip", "w") as zipf:
    zipf.write("output.xlsx")
  • Excelの内部圧縮: Excelファイル(.xlsx形式)は、内部的にZIP圧縮されていますが、不要なデータやスタイルが含まれていると、ファイルサイズが大きくなります。

これを避けるために、不要なスタイルやデータを削除することが重要です。

  • 画像の圧縮: Excelファイルに挿入した画像は、ファイルサイズを大きくする要因となります。

画像を圧縮してから挿入することで、ファイルサイズを削減できます。

これらの方法を活用することで、大規模データを効率的に処理し、Excelファイルの最適化を図ることができます。

Excelファイルの自動化とスケジュール実行

scheduleライブラリを使った定期的なExcelファイル作成

Pythonscheduleライブラリを使用することで、定期的にExcelファイルを作成するタスクを自動化できます。

以下のサンプルコードでは、毎日特定の時間にExcelファイルを作成するタスクを設定します。

import schedule
import time
import pandas as pd
def create_excel_file():
    # データを作成
    data = {
        "日付": [pd.Timestamp.now().date()],
        "売上": [1000]
    }
    df = pd.DataFrame(data)
    
    # Excelファイルに書き出す
    df.to_excel("daily_sales.xlsx", index=False)
# 毎日午前9時にExcelファイルを作成
schedule.every().day.at("09:00").do(create_excel_file)
while True:
    schedule.run_pending()
    time.sleep(60)  # 1分ごとにスケジュールを確認

osモジュールを使ったファイル管理の自動化

osモジュールを使用することで、ファイルの管理を自動化できます。

以下のサンプルコードでは、特定のフォルダ内のExcelファイルを整理するスクリプトを示します。

import os
import shutil
# 整理するフォルダのパス
source_folder = "source_folder"
destination_folder = "organized_folder"
# フォルダが存在しない場合は作成
if not os.path.exists(destination_folder):
    os.makedirs(destination_folder)
# フォルダ内のファイルを整理
for filename in os.listdir(source_folder):
    if filename.endswith(".xlsx"):
        # Excelファイルを新しいフォルダに移動
        shutil.move(os.path.join(source_folder, filename), os.path.join(destination_folder, filename))

openpyxlでのテンプレートファイルの利用

openpyxlを使用して、テンプレートファイルを基に新しいExcelファイルを作成することができます。

以下のサンプルコードでは、既存のテンプレートファイルを読み込み、データを追加して新しいファイルを保存します。

from openpyxl import load_workbook
# テンプレートファイルを読み込む
template_file = "template.xlsx"
workbook = load_workbook(template_file)
sheet = workbook.active
# データを追加
sheet["A1"] = "新しいデータ"
sheet["B1"] = 12345
# 新しいファイルとして保存
workbook.save("new_file_from_template.xlsx")

これらの方法を活用することで、Excelファイルの作成や管理を自動化し、効率的なデータ処理を実現できます。

定期的なタスクの自動化やファイルの整理を行うことで、作業の手間を大幅に削減することが可能です。

よくある質問

openpyxlとpandasのどちらを使うべき?

openpyxlpandasはそれぞれ異なる目的に特化したライブラリです。

以下のポイントを考慮して選択すると良いでしょう。

  • データの操作: 大量のデータを分析・操作する場合はpandasが適しています。

DataFrameを使用することで、データのフィルタリングや集計が簡単に行えます。

  • Excelファイルの作成・編集: Excelファイルの作成や書式設定、グラフの挿入など、Excel特有の機能を利用したい場合はopenpyxlが適しています。
  • 両方の併用: データ分析を行った後に、結果をExcelファイルに出力したい場合は、pandasでデータを処理し、openpyxlで書式設定を行うという方法もあります。

Excelファイルのサイズが大きくなりすぎる場合の対処法は?

Excelファイルのサイズが大きくなりすぎる場合、以下の対処法を検討できます。

  • 不要なデータの削除: 使用していない行や列を削除し、必要なデータのみを残します。
  • データ型の最適化: データ型を適切に設定することで、メモリの使用量を削減できます。

例えば、整数型のデータを浮動小数点型で保存する必要はありません。

  • 画像の圧縮: 挿入した画像がファイルサイズを大きくする要因となるため、画像を圧縮してから挿入することを検討します。
  • 分割保存: 大規模なデータセットは、複数のExcelファイルに分割して保存することを検討します。

これにより、各ファイルのサイズを小さく保つことができます。

Excelファイルをパスワードで保護する方法は?

Excelファイルをパスワードで保護するには、openpyxlを使用して以下のように設定します。

以下のコードは、Excelファイルにパスワードを設定する方法を示しています。

from openpyxl import Workbook
# 新しいワークブックを作成
workbook = Workbook()
# Excelファイルをパスワードで保護
workbook.security.set_password("your_password")
# Excelファイルを保存
workbook.save("protected_file.xlsx")

このように、openpyxlを使用することで、Excelファイルにパスワードを設定し、データの保護を行うことができます。

ただし、openpyxlのバージョンによっては、パスワード保護の機能が制限されている場合があるため、注意が必要です。

まとめ

この記事では、Pythonを使用してExcelファイルを作成・編集する方法について詳しく解説しました。

openpyxlpandasを活用することで、データの操作や視覚化が効率的に行えることがわかります。

これらの技術を駆使して、日々の業務やデータ分析に役立ててみてください。

新たなスキルを身につけることで、作業の効率化やデータ管理の向上を図ることができるでしょう。

  • URLをコピーしました!
目次から探す