Pythonでファイルの読み込み(文字列を含むファイル、連番ファイル)

科学技術計算では他のファイルから読み込んで解析するということが多いのでファイルの読み込みについて勉強していきます。

文字列を含むファイル

,Apple,Orange,Pineapple
Day1,5,10,3
Day2,8,13,0
Day3,2,16,3

上記のようなtest.csvファイルを読み込んで、平均値を出してみます。

import numpy as np
file = open('test.csv','r')
fruit = file.readline() #最初の1行を文字列として読み取る
fruit = fruit.replace('\n','') #readlineは改行も読み取ってしまうので置き換え
fruit = fruit.split(',') #カンマで分割してリストにする
num = np.genfromtxt('test.csv',skip_header=1,delimiter=',') #数値を読み取る(skip_headerはn行目を飛ばす)
num = np.transpose(num)
for i in range (1,4):
    ave = np.average(num[i]) #average関数で平均を求める
    print(fruit[i],ave)
file.close
Apple 5.0
Orange 13.0
Pineapple 2.0

skip_headerにより邪魔な文字列を無視して解析することができます。

連番ファイル

,Apple,Orange,Pineapple
Day1,1,1,91
Day2,1,2,62
Day3,1,0,120

このようなパイナップル人気が異常に高いパラレルワールドでの販売個数をtest2.csvとします。
これを連続して読み込むためには

import numpy as np
file = open('test.csv','r')
fruit = file.readline()
fruit = fruit.replace('\n','')
fruit = fruit.split(',')
for i in range (1,3): #2つのファイルを読み込む
    num = np.genfromtxt('test%d.csv'%i,skip_header=1,delimiter=',') #%dと%iがポイント
    num = np.transpose(num)
    for i in range (1,4):
        ave = np.average(num[i])
        print(fruit[i],ave)
file.close

for内に'test%d.csv'%iと設定してあげることで順番にファイルを読み込んでいきます。

Apple 5.0
Orange 13.0
Pineapple 2.0
Apple 1.0
Orange 1.0
Pineapple 91.0

もし連番ファイルが01,02,…という形式であれば

for i in range (1,3):
    num = np.genfromtxt('test%02d.csv'%i,skip_header=1,delimiter=',')

としましょう。

今日はここまで。