Pythonモジュール「NumPy」でファイルを読み書き(txt, csvなど)する方法についてまとめました。
【ファイル読込】loadtxtメソッド、genfromtxtメソッド
loadtxtメソッド
loadtxtメソッドでCSVファイルを読み込むことができます。
np.loadtxt(CSVファイルのパス, delimiter=区切り文字, skiprows=ヘッダ行の行数 dtype=データの種類)
skiprowsで値を指定すると、その行数だけ飛ばした行の位置からデータを読み込みます
これによりヘッダ行を含めず、値のみを取り出せます。
■返り値
読み込んだデータ(NumPyのリスト形式)
# -*- coding: utf-8 import numpy as np # CSVのロード data = np.loadtxt("nikkei.csv",delimiter=",", skiprows=1, dtype='float') # 結果表示 print(data)
上記のサンプルプログラムを実行すると「nikkei.csv」を読み込んで、その中身を表示できます。
(nikkei.csvはカンマ区切りで1行目がヘッダ行)
以下のエラーが出た場合は、loadtxtより高機能なgenfromtxtを使ってみましょう。
ValueError: could not convert string to float:
genfromtxtメソッド
genfromtxtメソッドでCSVファイルを読み込むことができます。
loadtxtメソッドでも読み込めますが、こちらの方が欠損値を埋める機能などがあり、高機能です。
np.genfromtxt(CSVファイルのパス, delimiter=区切り文字, skip_header=ヘッダ行の行数 dtype=データの種類)
skip_headerで値を指定すると、その行数だけ飛ばした行の位置からデータを読み込みます
これによりヘッダ行を含めず、値のみを取り出せます。
■返り値
読み込んだデータ(NumPyのリスト形式)
# -*- coding: utf-8 import numpy as np # CSVのロード data = np.genfromtxt("nikkei.csv",delimiter=",", skip_header=1, dtype='float') # 結果表示 print(data)
■読み込んだCSVファイル:nikkei.csv
上記のサンプルプログラムを実行すると「nikkei.csv」を読み込んで、その中身を表示できます。
[[ nan 18997.68 19176.81 18991.59 19114.37] [ nan 19301.04 19301.04 19092.22 19145.14] [ nan 19392.11 19442.13 19364.73 19401.72] ..., [ nan 18410.57 18469.38 18064.3 18191.32] [ nan 18398.76 18547.38 18327.52 18374. ] [ nan 18818.58 18951.12 18394.43 18450.98]]
– | 関連記事 |
---|---|
1 | ■【NumPy】CSVファイルの読み込み (loadtxt) |
2 | ■【NumPy】CSVファイルの読み込み (genfromtxt) |
【ファイル書込】savetxtメソッド
NumPyでは、savetxtメソッドでNumPy配列内のデータをテキストファイルに出力できます。
savetxtメソッド
numpy.savetxt(テキストファイル名, ndarray, delimiter=区切り文字)
※区切り文字を指定しない場合、タブ区切りになります。
※カンマ(,)を入れると、カンマ区切りで保尊できます。
# -*- coding: utf-8 import numpy as np A = np.array([[1, 2], [3, 4], [5, 6]]) np.savetxt('data1.txt', A, delimiter=",") np.savetxt('data2.txt', A.T, delimiter=",")
NumPy配列をそのままsavetxtメソッドに入れると縦に並べて保存されます。
NumPy配列を.Tで転置してからsavetxtメソッドに入れると横に並べて保存されます。
【data1.txt】
1.000000000000000000e+00,2.000000000000000000e+00 3.000000000000000000e+00,4.000000000000000000e+00 5.000000000000000000e+00,6.000000000000000000e+00
【data2.txt】
1.000000000000000000e+00,3.000000000000000000e+00,5.000000000000000000e+00 2.000000000000000000e+00,4.000000000000000000e+00,6.000000000000000000e+00
NumPyでは、savetxtメソッドでNumPy配列内のデータをファイル出力できます。
【書式】
numpy.savetxt(テキストファイル名, ndarray, delimiter=区切り文字)
※CSVファイルで保存する場合、区切り文字にはカンマ(,)を入れます。
# -*- coding: utf-8 import numpy as np A = np.array([[1, 2], [3, 4], [5, 6]]) np.savetxt('data1.csv', A, delimiter=",") np.savetxt('data2.csv', A.T, delimiter=",")
NumPy配列をそのままsavetxtメソッドに入れると縦に並べて保存されます。
NumPy配列を.Tで転置してからsavetxtメソッドに入れると横に並べて保存されます。
data1.csv
1.000000000000000000e+00,2.000000000000000000e+00 3.000000000000000000e+00,4.000000000000000000e+00 5.000000000000000000e+00,6.000000000000000000e+00
data2.csv
1.000000000000000000e+00,3.000000000000000000e+00,5.000000000000000000e+00 2.000000000000000000e+00,4.000000000000000000e+00,6.000000000000000000e+00
– | 関連記事 |
---|---|
1 | ■【NumPy】テキスト形式でファイル保存 |
2 | ■【NumPy】CSV形式でファイル保存 |
– | 関連記事 |
---|---|
1 | ■Python入門 サンプル集 |
2 | ■NumPy入門 サンプル集 |
コメント