pythonでcsvファイル内にあるデータを計算し、それを別のcsvファイルに書き出そうと考えています。また計算結果だけでヘッダーがないのでcsvファイルに出力する際にヘッダーも付け加えたいと考えています。計算するコードまではできているのですが、出力のファイルの部分のコードをどうすればよいかわかりません。
現在のコードで実行すると、途中の配列の確認では
3.0 -0.00056636818867
3.00001001358 -0.000566412889621
3.00002002716 -0.000566435456811
3.00003004074 -0.000566435994181
3.0000398159 -0.000566458100776
3.0000500679 -0.000566481232503
3.00006008148 -0.000566437398142
3.00007009506 -0.000566393667723
3.00008010864 -0.00056637196739
3.0000898838 -0.000566372467218
となりますが
最後の確認では
Unnamed: 0 0
0 0 t_list_i
1 1 v_list_i
のようになってしまいます。
これを見出しにtime(s)とB、そして上記のデータを出力したいと考えています。どのようにすればいいかアドバイスよろしくお願い致します。
python
1コード 2```import csv 3import matplotlib.pyplot as plt 4from scipy import integrate 5import pandas as pd 6import numpy as np 7 8 9csv_file = open('csv in/test2.csv') #csvファイルを開く 10csv_reader = csv.reader(csv_file) #開いたcsvファイルからreaderオブジェクトを生成 11t_list = [] #抽出するデータを格納する空のリストを作る 12v_list = [] 13 14for row in csv_reader: #readerオブジェクトをループしてデータ抽出 15 if csv_reader.line_num == 1: #ヘッダー行はスキップする 16 continue #Trueになる1行目はなにもしない 17 t_list.append(row[0]) #row行目の時刻データを格納 18 v_list.append(row[1]) #電圧データを格納 19 20csv_file.close() # csvファイルを閉じる。 21 22t_list_i = [float(s) for s in t_list] #配列は文字列型なのでint型に変換 23v_list_i = [float(s) for s in v_list] 24 25 26for i in range(10): #配列の中身を確認 27 print(t_list[i], v_list[i]) 28 29 30integ = integrate.cumtrapz(v_list_i, t_list_i) #scipyの台形則を利用 31 32for i in range(len(integ)): 33 integ[i] = -integ[i] #式のマイナスの部分 34 35del t_list_i[-1] #リストの長さを揃える 36del v_list_i[-1] #リストの長さを揃える 37 38plt.plot(t_list_i, v_list_i) #横軸をt,縦軸を積分値 39plt.xlabel("T",fontsize=14) 40plt.ylabel("V",fontsize=14) 41plt.xlim(3.0,5.25) 42plt.show() 43 44fig=plt.figure() 45ax=fig.add_subplot(111) 46ax.set_xlim(3.4,4.65) #2番目のデータをプラズマの範囲内にする設定 47 48 49plt.plot(t_list_i, integ) #横軸をt,縦軸を積分値 50plt.xlabel("T",fontsize=14) 51plt.ylabel("B",fontsize=14) 52plt.show() #3,3~4.8s プラズマ そこだけFFT 傾きを構成する 53 54data = ['t_list[i]', 'v_list[i]'] 55#Pandasで、配列をDataFrameに格納 56df = pd.DataFrame(data).to_csv('output.csv') 57 58df_header = pd.read_csv('output.csv') 59print(df_header)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/12 02:58
2022/06/12 06:32 編集
2022/06/14 04:28
2022/06/14 04:36
2022/06/14 05:10