そこで今回は、計算処理をした後にどのようにそれぞれのcsvファイルの生データから得られた計算結果をそれぞれ保存するかについて例を紹介したいと思います。
pythonのループ回路のデータ保存はnp.zerosが使える
pythonには空欄の配列を作るのに有用なモジュールが存在します。それがnumpyに入っているzerosモジュールです。これを使用することで任意の行と列の配列を作ることが出来ます。
import glob
import numpy as np
a = np.zeros((0,1), dtype = float)
csv_file = glob.glob("*csv")
前回のglobモジュールを使ったコードに空欄の配列を生成するnp.zerosを加えたコードがこんな感じです。
データ解析の場合には、小数点以下の情報も必要なことがおおいので、とりあえずは小数点を許容するデータ型のfloat型にしておくのが良いでしょう。
forループを使ってループ回路を作り、空の配列に保存する処理を作る
import glob
import numpy as np
a = np.zeros((0,1), dtype = float)
csv_file = glob.glob("*csv")
for f in csv_file
data = np.genfromtxt( f, delimiter=",", dtype='float')
#この行以降で実際の解析処理のコードを作る
#(今回は一行目と二行目の足し算をし最大値を抽出する計算を例に作成)
data1 = data[:,0]
data2 = data[:,1]
#それぞれの行を定義
data3 = data1+data2
#計算処理
data_max = max(data3)
#最大値を抽出
result = np.array(data_max)
#データ型を変更(これをしないとエラーを起こして止まる)
a = np.r_[a,result]
#aの空の配列に結果を追記する
#以下読み込んだcsvの数だけループ
np.savetxt("results.csv",a,delimiter = ",")
np.genfromtxt()
max()
np.array()
np.r_[]
np.savetxt()
np.genfromtxt()はnumpyのcsvファイルの読み取り用のモジュール
max()はデータ内の最大値を抽出するモジュール
np.arrayはnumpyに適応した配列にするための処理
正直ここに関しては、まだ勉強中なので自信はありません。間違っていたらすみません。
np.r_[]は配列を結合するためのモジュール
np.savetxtはその名前の通り、csvに出力するためのモジュール
np.savetxtはnumpyに備わっているcsv出力のためのモジュールです。今回のコードは、np.savetxt("result.csv",a,delimiter = ",")となっていて、これは「result.csvというファイル名で、aの配列を、カンマ区切りのcsvファイルで出力します」という意味になります。
ループ回路は一度作ってしまえば応用が利く
ループ回路が一度できてしまえば、かなりデータ処理は楽になります。また応用がかなり効くので、他の計算用のコード書いた時にもコピペして調整しちゃれば使いまわせます。甘味はまだ初心者なので、多分効率的なコードは書けませんが、他のおなじような初心者の参考になってくれると幸いです。
