(35) numpy or CSVパッケージでCSVファイルの読み書き

投稿者: | 2014年7月10日

7,348 views

この記事は最終更新から 1880日 が経過しています。

3行6列のデータ配列を持つ CSVファイル を用意した。

[user@linux]$ cat test.csv
10,11,12,13,14,15
20,21,22,23,24,25
30,31,32,33,34,35

方法1:numpyの関数を使用する。

このファイルを numpy.loadtxt でリードしてみる。

>>> import numpy as np
>>> a = np.loadtxt('test.csv', delimiter=',')
>>> a
array([[ 10.,  11.,  12.,  13.,  14.,  15.],
       [ 20.,  21.,  22.,  23.,  24.,  25.],
       [ 30.,  31.,  32.,  33.,  34.,  35.]])

全要素の値を2倍した後、その配列を numpy.savetxt で CSVファイルとしてセーブしてみる。

>>> b = a * 2
>>> b
array([[ 20.,  22.,  24.,  26.,  28.,  30.],
       [ 40.,  42.,  44.,  46.,  48.,  50.],
       [ 60.,  62.,  64.,  66.,  68.,  70.]])
>>> np.savetxt('out.csv', b, delimiter=',', fmt='%d')

正しく出力できている!

[user@linux]$ cat out.csv
20,22,24,26,28,30
40,42,44,46,48,50
60,62,64,66,68,70

方法2:CSVパッケージを使用する。

numpyを使わず、csvパッケージを使う方法もある。
Read

>>> import csv
>>> with open('test.csv', newline='') as fh:
...     spamreader = csv.reader(fh, delimiter=',')
...     for row in spamreader:
...         a.append(row)
...
>>> a
[['10', '11', '12', '13', '14', '15'], ['20', '21', '22', '23', '24', '25'], ['30', '31', '32', '33', '34', '35']]
>>>

Write

>>> with open('out2.csv', "w") as fh:
...     writer = csv.writer(fh, lineterminator="\n")
...     writer.writerows(a)
...
>>>
[user@linux]$ cat out2.csv
10,11,12,13,14,15
20,21,22,23,24,25
30,31,32,33,34,35
[user@linux]$

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です