データ加工の処理をするときに、バラバラになったローカルファイルを扱う必要が出てくることがあります。
そんなときはosモジュールを使うと便利です。
ひとまず、あるディレクトリの中身をすべて出したい
os.list_dir
を使います。
ファイルオブジェクトやフルパスが帰ってくるわけではないので注意です。
import os os.list_dir('.') #現在のディレクトリ直下にあるディレクトリ/ファイル名が帰ってくる
よくあるのが日付ごとにファイルが分かれているものを一つのDataFrameにしたい場合など
このくらいだと、スクリプトにしておくのもめんどくさく、必要な時にさっとかけるのが楽でいいかな。
import pandas as pd import os dfs = [] for file_name in os.list_dir('.'): #ファイル名がcsvなら読み込む if file_name.endswith('.csv'): dfs.append(pd.read_csv(file_name) df = pd.concat(dfs)
あるディレクトリ配下のさらに下まで探していく
os.walk
を使います。
帰ってくる情報が多いので、ちょっと慣れが必要です。
例えば、ログが日付ごとのディレクトリに、時間ごとに分かれて格納されているときなどに便利です。
import os import pandas #順にディレクトリを掘りつつ、そのディレクトリ、その下のディレクトリ、ファイル群を返してくれる #直下が日付ディレクトリ、その下がファイルだとわかっている場合 dfs = [] for root,dirs,files in os.walk('.'): if files: dfs_by_date = [] for f in files: dfs_by_date.append(pd.read_csv('./'+ root+'/' + f)) dfs.append(pd.concat(dfs_by_date) df = pd.concat(dfs)