データの読み込み

 csv形式で記録されているファイルからデータを読み込む. 以下のような内容のsample_data.csvという名前を持ったファイルがあるとしよう.このの中身を読み込む. csv形式では,データとデータの間が「,」で区切られている.(ファイルは,エクセルやメモ帳を使って準備してください)

#sample data 2014/6/26

-15,170
-13,172
-12,115
-10,120
-9,81
-7,52
-6,30
-4,18
-2,6
0,0
1,1
2,6
3,15
5,24
6,40
9,78
10,105
12,143
13,170
17,250
20,380

csv形式のファイルの中身を読み込んで,二つの配列に内容をコピーするプログラムである.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import numpy as np

file_id = 'sample_data.csv'
file_path = '/Users/kentaro/work_space/python/'
#file_path = './'

rfile = file_path + file_id

data = np.loadtxt(rfile, comments='#' ,delimiter=',')
print(data.shape)

x_csv = data[:,0]
y_csv = data[:,1]

print(x_csv)
print(y_csv)

実行結果は以下の通り,sample_data.csv内の情報を読み込んで,印字できている.

(21, 2)
[-15. -13. -12. -10.  -9.  -7.  -6.  -4.  -2.   0.   1.   2.   3.   5.   6.   9.  10.  12.  13.  17.  20.]
[ 170.  172.  115.  120.   81.   52.   30.   18.    6.    0.    1.    6.   15.   24.   40.   78.  105.  143.  170.  250.  380.]

1行目:モジュールnumpyの取り込み.npと呼ぶことにする.

3,4行目:ファイル名をfile_idという変数に,ファイルの置き場所をfile_pathという変数に書く.

7行目:rfileという変数に,置き場所とファイル名を繋げた内容を書く.

9行目:numpyのloadtxtという命令でファイルの中身を読み込む. loadtxtの最初の引数には,ファイル名をかく.ここでは7行目で用意したrfileとする. 「comments=’#’」は,先頭に「#」がついた行はコメント行とみなして無視し,読み込まない. ファイルの1行目にある「#sample data 2014/6/26」の行が無視される. 「delimiter=’,’」は,データ間が「,」で区切られていることを指示している.

10行目:配列であるdataの大きさを.shpaeで調べて,印字している.ここでは,21行2列という結果である.

12,13行目:data[:,0]は,配列dataの1列目(0番列)の要素全てという意味である. 「:」の左と右に番号を書けば,操作の対象とする要素を指定できる.例えば,「0:5」と書き換えれば0番から5番までの要素が指定される. 指定した範囲の要素(ここでは全て)を新しい配列x_csvに格納している.

15,16行目:読み込んだ配列の印字.

Note

もしも上記のプログラムを実行して,「No such file or directory: ‘./sample_data.csv’」のようなエラーが出たら, (ファイル名などを間違えていないならば)PATHが通っていない可能性がある.PATH&Pythonなどをキーワードに検索をしてみよう. 環境変数辺りをいじる必要があるかもしれない.私の環境(Mac+Canopy)でも,なぜかエラーが出たので, 上記のコードでは 4行目でファイルのおいてある場所を明示的に書いた.PATHがちゃんと通っていたら, 5行目のような書き方や,あるいは何も指定しないでもよいはず.

Previous topic

実験データをいじる(工事中)

Next topic

データの描画

This Page