データアナリストのメモ帳

データアナリストのメモ帳

IT企業で働くデータアナリストのブログ

【Python/glob】フォルダ内の複数のCSVファイルを一括で読み込んで縦に連結させる方法

globモジュールを使って、ディレクトリ内にある複数のCSVファイルを読み込み、さらにそれらを結合させる方法です。
Pythonを使って簡単に業務効率化しましょう。

例えば、あるフォルダに、何かのログがCSVとして毎日吐き出されるような場合に使えます。
CSVファイルを一括で読み込んで一つのファイルに集約できると、何かと便利ですよね。CSVExcelで開いて一つずつ繋げていく手間が省けます。

まずは、モジュールをimportします。

import pandas as pd
import os
import glob

osを使ってディレクトリを変更しましょう。
読み込みたいCSVファイルが置いてあるディレクトリを指定します。

また、読み込んだCSVファイルを連結させる下準備として、空のDataFrameを用意しておきます。

# ディレクトリ変更
os.chdir('/Users/username/downloads/dirname')

df = pd.DataFrame(columns = [])

globモジュールを使います。
引数に指定されたパターン(正規表現)にマッチするファイルパス名を取得することが出来ます。
ここでは,log_nameという文字列を含むファイルパスを取得します。

log_name_20200101.csv
log_name_20200102.csv
log_name_20200103.csv

このような形で、ディレクトリ内にCSVファイルが置かれていることを想定しています。

for i in glob.glob("*log_name*"):
    tmp = pd.read_csv(i)
    df = pd.concat([df, tmp])

for文でglobで取得したファイル名を一つずつ処理していきます。
pd.read_csvで読み込み、pd.concatで縦方向に結合していきます。
空のDataFrameの中に読み込んだCSVファイルを足していくイメージですね。

以下はまとめです。

import pandas as pd
import os
import glob

# ディレクトリ変更
os.chdir('/Users/username/downloads/dirname')

df = pd.DataFrame(columns = [])

for i in glob.glob("*log_name*"):
    tmp = pd.read_csv(i)
    df = pd.concat([df, tmp])

以上、フォルダ内の複数のCSVファイルを一括で読み込んで縦に連結させる方法でした!