0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-05-26

フラットファイルとは

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

フラットファイル 【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)

参考情報

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?