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=',')
としましょう。
今日はここまで。