概要
Pythonを活用して、複数のCSVファイルを1つのExcelファイルに簡単に統合する方法を紹介します。この記事では、フォルダ内のすべてのCSVファイルを自動的に検索し、それぞれのファイルをExcelの異なるシートにまとめるPythonスクリプトについて説明します。このミニプログラムは、日々の業務で多くのデータファイルを扱うビジネスプロフェッショナル、研究者、または学生に特に便利です。
使用例
- CSVファイルでダウンロードしたクレジットカードの月別ファイルを1つに統合し、1つのファイルで管理できるようにする。
- 分析機器から集めた分析データのCSVファイルを統合し、解析を楽にする。
必要なPythonライブラリ
- pandas: データ分析と操作を容易にするためのライブラリです。CSVファイルの読み込み、データフレームの操作、およびExcelファイルへの書き出しに使用します。
- openpyxl: pandasと連携してExcelファイルを読み書きするためのライブラリです。特に
.xlsx
フォーマットのファイルを扱う際に必要です。
これらのライブラリをインストールするには、コマンドプロンプトやWindows PowerShellで次のコマンドを使います:
pip install pandas openpyxl
使用手順
- プログラムの実行:python プログラムを実行します。
- フォルダの選択: ダイアログが表示され、CSVファイルが保存されているフォルダを選択します。
- ファイル保存の選択: ダイアログが表示され、結合されたデータを保存するExcelファイルの名前と場所を指定します。
- 自動統合: 選択されたフォルダ内のすべてのCSVファイルを読み込み、指定したExcelファイルにそれぞれ異なるシートとして保存します。
プログラム
下記のコードをメモ帳などに丸々コピーしてpythonファイル(〇〇.py)にしてください。
import os
import pandas as pd
from tkinter import Tk, filedialog
def select_folder():
"""フォルダ選択ダイアログを表示し、選択されたフォルダのパスを返す"""
root = Tk()
root.withdraw() # Tkのルートウィンドウを非表示にする
folder_selected = filedialog.askdirectory()
root.destroy()
return folder_selected
def select_save_file():
"""ファイル保存ダイアログを表示し、保存先のファイルパスを返す"""
root = Tk()
root.withdraw() # Tkのルートウィンドウを非表示にする
file_path = filedialog.asksaveasfilename(defaultextension='.xlsx', filetypes=[('Excel Files', '*.xlsx')])
root.destroy()
return file_path
def merge_csv_to_excel(folder_path, output_file):
"""指定されたフォルダ内の全CSVファイルを読み込み、1つのExcelファイルに結合して保存する"""
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
writer = pd.ExcelWriter(output_file, engine='openpyxl')
for file in csv_files:
try:
df = pd.read_csv(os.path.join(folder_path, file), encoding='utf-8')
except UnicodeDecodeError:
try:
df = pd.read_csv(os.path.join(folder_path, file), encoding='cp932') # 日本語のエンコーディングを試す
except UnicodeDecodeError:
continue # 他のエンコーディングでも読み込めなかった場合、そのファイルをスキップ
df.to_excel(writer, sheet_name=os.path.splitext(file)[0], index=False)
writer.save()
print(f"All CSV files have been merged into {output_file}")
# ユーザーにフォルダとファイルの場所を選択させる
input_folder = select_folder()
if input_folder:
output_file_path = select_save_file()
if output_file_path:
merge_csv_to_excel(input_folder, output_file_path)
else:
print("File save operation was cancelled.")
else:
print("Folder selection was cancelled.")
あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。
csvをexcelにまとめるくん
まとめ
このPythonミニプログラムは、複数のCSVファイルを簡単かつ迅速にExcelファイルに変換するための効率的なソリューションを提供します。GUIを利用した簡単な操作で、エンコーディングの問題にも対応しつつ、作業の自動化と時間節約を実現します。データ処理の時間を大幅に削減し、より重要な分析作業に集中できるようになります。このプログラムを活用して、日々のデータ管理をスマートに行いましょう。