【Python/glob】フォルダ内の複数のCSVファイルを一括で読み込んで縦に連結させる方法【業務効率化】
Pythonを使って簡単に業務効率化しましょう!
globモジュールを使って、ディレクトリ内にある複数のCSVファイルを一括で読み込み、さらにそれらを縦に結合させる方法です。
例えば、あるフォルダに、何かのログがCSVとして毎日吐き出されるような場合に使えます。
CSVファイルを一括で読み込んで一つのファイルに集約できると、何かと便利ですよね。CSVをExcelで開いて一つずつ繋げていく手間が省けます。
まずは、モジュールを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ファイルを一括で読み込んで縦に連結させる方法でした!
業務効率化できると良いですね!