【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ファイルをデータフレームに読み込む!
更新日 : 2020年5月8日

では、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)からデータを保存する方法
更新日 : 2020年5月8日

この記事で作成した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の読み込み/書き込みをマスターしよう!
更新日 : 2020年5月8日

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

これは絶対参照でも相対参照でもどちらでも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

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

フクロウ

フクロウ

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