この記事にはプロモーションが含まれています。

【Python】フォルダ内にあるすべてのCSVファイルを結合する【ソースコード】

【Python】フォルダ内にあるすべてのCSVファイルを結合する【ソースコード】

この記事ではPythonとそのライブラリであるPandasChardetを使用して

指定フォルダ内にあるすべてのCSVファイルをひとつに結合する方法

をご紹介します。

必要なツール・ライブラリのインストール方法やソースコード、具体的な使用方法を画像つきで丁寧に解説しています。

今回ご紹介するソースコードを使用すれば、「指定したフォルダ内に入れてあるCSVファイル」は、それらのディレクトリ構造に関係なく、すべてひとつのファイルに結合することが可能です。

ケケンタ

ぜひご活用いただければ何よりです!




ケケンタ

ケケンタのITブログでは、WebアプリPHPLaravel)やWeb制作WordPressコーディング)について情報を発信しています。
学習中の方や実務をされている方など多くの方にアクセスいただいていますので、ぜひほかの記事も参考にしてみてください!


運動不足、気になっていませんか?

もしプログラミング学習やお仕事で運動不足が気になっているなら
連続屈伸運動がおすすめです!

ボタンにカーソルを合わせるだけ
カウントダウンが始まるタイマーをご用意してみました!

ケケンタ

無理のない範囲で、ぜひ隙間時間に屈伸運動を取り入れてみて下さい!

タイマースタート

3:00

※運動不足だと連続3分で取り組んでもかなり息が切れます
(僕は加えて気分もちょっと悪くなりました……)
絶対にご無理の無い範囲でお取り組みください!


目次

【事前準備】必要ソフト・ライブラリのインストール

本章では以下のインストール方法をそれぞれ解説します。

  1. Python
  2. pip(パッケージ管理ツール)
  3. Pandas(ライブラリ)
  4. Chardet(ライブラリ)
ケケンタ

もし上記の中で、インストールが済んでいないものがあれば、以下よりご紹介する方法でインストールを完了しましょう。

① Pythonのインストール

STEP
公式ドキュメントからインストーラをダウンロードする

公式サイトからインストーラをダウンロードします。

Pythonのインストーラをダウンロード
Pythonのインストーラをダウンロード

■ 公式サイトURL:https://www.python.org/

STEP
インストーラにしたがってPythonをインストールする

インストーラをダブルクリックします。

すると、インストーラが起動するので「Add python.exe to PATH」にチェックを入れます。

「Add python.exe to PATH」にチェックを入れ忘れるとさらにひと手間かかることになるため、必ずチェックを入れ忘れていないかご確認下さい。

Pythonのインストーラ起動直後の画面
Pythonのインストーラ起動直後の画面

インストールが完了するまで待機します。

Pythonのインストール中
Pythonのインストール中

以下のような画面になったらインストールは完了です。

Pythonのインストール完了
Pythonのインストール完了
ケケンタ

Closeボタンで閉じてしまってOKです!

STEP
Pythonがインストールできていることを確認する

Windows PowerShellターミナルで以下のコマンドを実行します。

Pythonのバージョンが表示されれば、無事にインストールは完了しています。

python --version
Pythonのインストール確認
Pythonのインストール確認

② pipのインストール

前節のPythonのインストールの手順で「Add python.exe to PATH」にチェックを入れてインストールをした場合、自動的にpipも使用できるようになっています。

pipがインストールされているか確認する方法

以下のコマンドを実行してpipのバージョンが表示されればインストールされています。

pip --version

この節では、Pythonのインストールが済んでいるけどpipが使用できないという方向けのインストール方法をご紹介します。

STEP
get-pip.pyファイルをダウンロードする

以下のリンクからget-pip.pyを取得します。

https://bootstrap.pypa.io/get-pip.py

保存先はお好きな分かりやすい場所でOKです。

ケケンタ

リンクをクリックしてもページが開かれるだけの場合は、以下の手順でファイルをダウンロードすることが可能です。

1.リンクを右クリック
2.「名前を付けてリンク先を保存」をクリック

STEP
get-pip.pyを配置したディレクトリ上でコマンドを実行

get-pip.pyを配置したディレクトリ上で以下のコマンドを実行します。

python get-pip.py

例えば、ファイルを「デスクトップ」に保存したなら、ターミナル上で「デスクトップ」へ移動し、上記のコマンドを実行します。

デスクトップへ移動する(Windowsの場合)

cd C:\Users\ユーザー名フォルダ\OneDrive\デスクトップ
デスクトップへ移動
デスクトップへ移動
STEP
pipがインストールされたか確認する

以下のコマンドを実行してpipがインストールされているか確認します。

pip --version
pipのインストール確認
pipのインストール確認

③ Pandas・Chardetのインストール

ライブラリはpipを使用することで簡単にインストール可能です。

以下のコマンドを実行しましょう。

pip install pandas
pip install chardet
ケケンタ

以上で必要なソフトやライブラリのインストールは完了です!

【ソースコード】複数のCSVファイルをひとつにまとめる

早速ですが、以下が複数のCSVファイルをひとつのCSVファイルにまとめるソースコードです。

import os
import pandas
import chardet
from datetime import datetime

def detect_encoding(file_path):
    with open(file_path, 'rb') as file:
        result = chardet.detect(file.read())
    return result['encoding']

def merge_csv_files(root_folder, output_folder):
    # 出力フォルダが存在しない場合は新規作成
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
        print(f"'{output_folder}'ディレクトリを新規作成しました。")
    
    all_files = []
    
    # 再帰的にフォルダを探索し、CSVファイルのリストを作成
    for root, dirs, files in os.walk(root_folder):
        for file in files:
            if file.endswith('.csv'):
                all_files.append(os.path.join(root, file))
    
    # CSVファイルを読み込み、データフレームに結合
    dataframes = []
    for file in all_files:
        encoding = detect_encoding(file)
        df = pandas.read_csv(file, encoding=encoding)
        dataframes.append(df)
    
    merged_df = pandas.concat(dataframes, ignore_index=True)
    
    # 現在日時を取得し、ファイル名に追加
    now = datetime.now()
    timestamp = now.strftime("%Y%m%d_%H%M%S")
    output_file = os.path.join(output_folder, f"{timestamp}_merge.csv")
    
    # 結合したデータフレームを新しいCSVファイルにUTF-8エンコーディングで保存
    merged_df.to_csv(output_file, index=False, encoding='utf-8-sig')

# CSV格納ディレクトリ
root_folder = './target_csv_files'
# 結合ファイル保存先ディレクトリ
output_folder = './merged'
merge_csv_files(root_folder, output_folder)

ポイント

ソースコードのポイントは以下のとおりです。

ソースコードのポイント
  • 各CSVファイルの保存形式を自動的に読み取り、適切な形式で結合保存可能
    (日本語の文字化けも防止)
  • 出力フォルダを作成し忘れても自動作成される
  • CSVファイルを再帰的に検出するため、結合対象のCSVファイル群を同じ階層に取り出さなくても使用可能

ディレクトリ構造

このソースコードを実際に使用する際は、ディレクトリ構造が重要になってきます。

具体的には、以下3つのファイル・ディレクトリは同じ階層に設置する必要があります。

  1. 実行ファイル(pyファイル)
  2. 結合したいCSVファイル群を格納するディレクトリ
  3. 結合後のCSVファイルを格納するディレクトリ

階層構造のイメージ図がこちらです。

ソースコードを正しく使用するためのディレクトリ構造

CSVファイル結合プログラム使用時のディレクトリ構造
CSVファイル結合プログラム使用時のディレクトリ構造
ケケンタ

上記を踏まえた上で、実際にプログラムを使用するための準備をひとつずつ進めていきましょう!

「パス」のことをよく理解できていない場合はこちらをご覧ください

使用方法

STEP
「root_folder」にひとつにまとめたいCSVファイルを格納するためのディレクトリ名を指定する
# CSV格納ディレクトリ
root_folder = './target_csv_files'
STEP
指定したディレクトリを作成し、CSVファイルを配置する

STEP1で指定したディレクトリ(target_csv_files)を任意の場所に作成し、その中にひとつにまとめたいCSVファイル群を配置します。

このとき、CSVファイルのディレクトリ階層が分かれてしまっていても問題ありません。

STEP
「output_folder」にひとつにまとめられたCSVファイルの保存先ディレクトリ名を指定する
# 結合ファイル保存先ディレクトリ
output_folder = './merged'

こうすることで、ひとつにまとめられて新規作成されたCSVファイルはmergedディレクトリ内に生成されるようになります。

STEP
ソースコードを記述したpyファイルを作成する

ソースコードを丸ごとコピーし、pyファイルに貼りつけます。

STEP
pyファイルを実行する

「root_folder」に指定したディレクトリと同じ階層にpyファイルを配置します。

そして、以下のコマンドでpyファイルを実行します。

python ファイル名.py
ケケンタ

以上の手順により、実際に複数のCSVファイルをひとつにまとめることができます!

もしエラーが発生したら……

もしもエラーが発生した場合は、以下の点をご確認下さい。

エラーが発生したときの確認事項
  • Pythonがインストールされているか
  • pipがインストールされているか
  • PandasChardetがインストールされているか
  • 結合したいCSVファイル群を配置したディレクトリ名ソースコードのroot_folderで指定したディレクトリ名が一致しているか
  • 結合後のCSVファイル保存先ディレクトリ名ソースコードのoutput_folderで指定したディレクトリ名が一致しているか
  • 実行ファイル(pyファイル)CSVファイル群の格納ディレクトリ結合後のCSVファイルの保存先ディレクトリが同じ階層にあるか

まとめ

以上がPythonで指定フォルダ内にあるすべてのCSVファイルをひとつに結合する方法のご紹介でした。

今回ご紹介したソースコードについては当然ながらご自由にお使いいただいて大丈夫です。

ケケンタ

ご自身の環境やご状況に合わせて適宜 修正・調整してご活用いただければと思っています!

また、もし解説でわかりづらい箇所があればX(旧:Twitter)や当記事のコメント欄へメッセージをいただけますと幸いです。

それでは最後までご覧いただきありがとうございました!

【Python】指定フォルダ内にあるすべてのCSVファイルを結合する【Pandas】のアイキャッチ画像

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!

コメント

コメントする

CAPTCHA


目次