NumPyを用いたフラットファイルのインポート処理


フラットファイルとは

フラットファイルとは、文字で表されるデータを列挙して格納するファイル形式の一つで、一行が一つのレコードを表すもの。
古くは各項目が固定長のものを指したが、現代では各項目を区切り記号で分けた可変長のものを含む場合もある。

フラットファイル 【flat file】より

つまり、CSVやTSVファイルはフラットファイルです。

NumPyを用いたインポート処理

np.loadtxt()を使用して単純なインポート処理を行います。

data = np.loadtxt('test.csv', delimiter=',')

ヘッダーやコメント有り、区切り文字がタブ、取得したい列を限定したい場合は、パラメータで指定します。

data = np.loadtxt('test.tsv', delimiter='\t', skiprows=1, usecols=[0, 2])
  • delimiter : 区切り文字
  • skiprows : 先頭から何行をスキップするか指定。(デフォルトは0=スキップしない)
  • usecols : 取得したい列

ほかにデータ型を指定できるパラメータdtypeがあります。

  • dtype : データ型(デフォルトはfloat型)

dtypeを指定しないで文字列のヘッダーを読み込むとエラーになるので注意が必要です。

# 文字列型としてインポート
data = np.loadtxt('test.tsv', delimiter='\t', dtype=str)

# float型としてインポート(上から1行だけスキップ)
data_float = np.loadtxt('test.tsv', delimiter='\t', dtype=float, skiprows=1)

数値型を自動判別する関数としてnp.genfromtxt()があります。
dtype=Noneを渡すと列に対応する数値型を自動判別してくれます。

data = np.genfromtxt('test.csv', delimiter=',', names=True, dtype=None)

また、np.recfromcsv()は同様の動きをしてくれます。
np.genfromtxt()との違いはdtypeがデフォルトでNoneとなるので、指定しなくてもよいです。

data = np.recfromcsv('test.csv', delimiter=',', names=True)

参考情報