Pandasでの複数ファイル読み込み
指定したフォルダ内に格納されている複数のファイルを読み込み、データフレームを作成する方法についての備忘録。
# 必要なパッケージの読み込み import pandas as pd import numpy as np from datetime import date, datetime, timedelta import time import sys import glob import errno # ファイルに日付データが含まれている前提で、開始日と終了日を指定する。 # データフレーム作成時にインデックスとして使用。 start = datetime(2015, 6, 1) end = datetime(2016, 5, 31) rng = pd.date_range(start, end) # 次に関数を定義。xはパス名のうち省略したい部分を差す。 # データフレーム作成時、読み込みたいファイル名から、 # ディレクトリと拡張子を省いたものをカラム名とする。 def into_dataframe(path, x): files = glob.glob(path) df = pd.DataFrame() col = [] list_ = [] for name in files: try: # -4を入れることで拡張子を省く col.append(name[x:-4]) d = pd.read_csv(name, sep='\t') list_.append(d.ix[:, 1:]) except IOError as exc: if exc.errno != errno.EISDIR: raise df = pd.concat(list_, axis=1) df.index = rng df.columns = col return df # データを読み込むパス名およびxを指定 path = '/Users/xxx/Documents/files/*.tsv' df = into_dataframe(path, 100)
このように、ある程度ファイルのフォーマットが揃っている必要はあるが、複数のファイルを1つのデータフレームにまとめたいときに便利。