【NumPy入門 np.loadtxt】ファイル(csv/tsv)からデータを読み込む方法

こんにちは!インストラクターのフクロウです!

NumPyはnp.arrayという配列クラスを使って高速な行列計算ができる、科学計算・機械学習の実装で重要なライブラリです。

この記事では、NumPyでCSV/TSVファイルを読み込むnp.loadtxt関数を紹介します。

CSV/TSVの読み込みは、今であれば前処理を考えればPandasなどを使うのも手です。

ですが、NumPyだけでデータの読み込みまでできる方法を学んでおくとちょっとしたデータ読み込みで楽ができますよ!

是非この記事で使い方を学んでくださいね!

np.loadtxtとは

np.loadtxt関数はNumPyのファイル読み込み用関数です。

主に、CSV/TSVなどの単純な構造のファイルを読み込むのに使います。

もしも前処理などを効率的に行いたい場合は、Pandasで読み込んだ方が便利だと(僕は)思うので、以下の記事を読んでください!

【Pandas入門 pd.read_csv】CSVファイルをデータフレームに読み込む!
更新日 : 2019年8月15日

では、np.loadtxtのパラメータを紹介しましょう。

np.loadtxt(
    fname="test.csv",    # 読み込みたいファイルのパス
    dtype="float",       # 要素の方を指定
    delimiter=",",       # ファイルの区切り文字
    comments="#",        # header/footerの先頭に書かれる文字
    skiprows=0,          # 先頭の何行を無視するか(指定した行数までは読み込まない)
    usecols=None         # 読み込みたい列番号(指定する場合はタプルで)
)

上に載せたのは主要なものだけですが、もっと詳しく知りたい場合は以下のページをおすすめします。

公式ページ

浮動小数点数や文字列、整数などが混ざったCSVの読み込みを行うならば、簡単な前処理が必要になります。

なのでそのような場合は先程紹介したPandasの方を使ってください(そっちのほうが簡単です)。

ここでは、単純なCSV/TSVファイルの読み込み方法を紹介します。

np.loadtxtの使い方

さて、CSV/TSVファイルを作成するNumPy関数np.savetxtについて以下の記事で説明しています。

【NumPy入門 np.savetxt】ファイル(csv/tsv)からデータを保存する方法
更新日 : 2018年9月19日

この記事で作成したCSV/TSVファイルを読み込んでみましょう。

CSVファイルの読み込み

まずはCSVファイルの読み込み方を確認しましょう。

読み込みたいCSVファイルがPythonファイルと同じ場所にあるとしましょう。

このとき、ファイルパスは特に指定せずに、ファイル名を書くだけでOKです。

np.loadtxt(
    fname="sample.csv",  # 読み込みたいファイルのパス
    dtype="float",       # 要素の方を指定
    delimiter=",",       # ファイルの区切り文字
)

これでOK。

[Output]
array([[ 1.06569228,  0.31596939,  0.06477798],
       [-0.54669414,  0.24027839, -0.15254126],
       [-0.24522706,  1.04796651,  0.37502059],
       [-0.5775777 , -0.3153236 , -0.84426695],
       [-0.26162637, -0.8169497 ,  0.36793744]])

また、np.loadtxtの返り値としてファイルの中身が配列になって返ってきます。

なので例えば、以下のように返り値を変数に代入してあげてください。

data = np.loadtxt(
    fname="sample.csv",    # 読み込みたいファイルのパス
    dtype="float",       # 要素の方を指定
    delimiter=",",       # ファイルの区切り文字
)

ちなみに、CSVの読み書きについては以下の記事でも詳しく解説しています。

【NumPy入門】NumPyによるCSVの読み込み/書き込みをマスターしよう!
更新日 : 2019年4月27日

もしもファイルが別のディレクトリにある場合は、ファイル名だけではなくちゃんとファイルパスを指定する必要があることに注意してください。

これは絶対参照でも相対参照でもどちらでもOKです。

  • 絶対参照
    • ルートディレクトリからパスを全部書く方法
    • ex. fname="/home/fukurou/workspace/data/sample.csv"
  • 相対参照
    • カレントディレクトリから見てどこにあるかで書く方法
    • ex. "./data/sample.csv"

TSVファイルの読み込み

次に、TSVファイルの読み込み方を確認しましょう。

CSVファイルの読み込みとの違いはdelimiter="\t"とする部分だけです。

data2 = np.loadtxt(
    fname="sample.tsv",    # 読み込みたいファイルのパス
    delimiter="\t",        # ファイルの区切り文字
)

data2
[Output]
array([[ 1.06569228,  0.31596939,  0.06477798],
       [-0.54669414,  0.24027839, -0.15254126],
       [-0.24522706,  1.04796651,  0.37502059],
       [-0.5775777 , -0.3153236 , -0.84426695],
       [-0.26162637, -0.8169497 ,  0.36793744]])

簡単ですね。

まとめ

この記事では、NumPyでCSV/TSVなどのテキストファイルを読み込むnp.loadtxt関数を紹介しました。

numpyでファイルの読み込みなどを行う利点は、他のライブラリを読み込まなくてもこれ一つで完結させられる点にあると思います。

ちょっと複雑なことをしたいならば、今ならばPandasを使ったほうが便利です。

簡単なファイルの読み書きならば、np.loadtxt/np.savetxtを使って1~2行でぱぱっとやれちゃうようになりましょう!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説