2017-10-06 32 views
0

我正在Python中運行幾個模擬。每個模擬都有結果數據:name, time, cost, error其中name是實際模擬的字符串,time是int變量,cost是每個模擬的numpy數組或列表,大小不同,錯誤是float變量。到目前爲止,我總是隻進行一些模擬。我將結果存儲在單獨的.txt文件中。但現在我需要運行多達100次模擬,我認爲這是處理它的最佳時機:)。Worflow將結果寫入Python中的文件

我可以存儲模擬結果,例如在詞典:

result = {"SimulationA": {"time": 458,"cost": [12.35, 1.15, 66, 85], "error": 2.45 }"SimulationB":{"time": 512,"cost": [12.35, 66], "error": 12.3 } } 

如果可能的話,我想一切都寫與結構的Excel或CSV文件:

enter image description here

用一個例子結果:

enter image description here

你會推薦什麼工作流程(我更喜歡簡單的東西,計算時間等不是真實的很重要)?非常感謝您的寶貴時間。

+1

可以使用熊貓dataframes https://pandas.pydata.org/pandas-docs/stable/10min.html來存儲信息,然後就使用此功能把每件事寫到Excel https://開頭大熊貓.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html –

+0

我嘗試了使用熊貓的這個工作流程 - 正是我需要的。謝謝你們!!! – Matias

回答

1

如果模擬順序沒有改變,爲什麼不把信息存儲在[[time1,cost1,error1],[time2,cost2,error2],...]等numpy數組中,然後使用numpy將其保存爲csv文件。然後你只需在excel和瞧瞧打開文件。

簡單代碼和excel中結果的圖片。您可以隨心所欲地將其包含在csv文件中,如果您更喜歡所顯示的格式,或者在隨機參數中交換100和3,則還可以將數據轉置爲excel。這也可能是最簡單的列表,然後將數據轉換爲numpy數組以保存它。

https://imgur.com/EpGKlaK

import numpy as np 

data = np.random.rand(100,3) 

np.savetxt('test.csv',data, delimiter=',') 
1

你有成本的額外逗號是有問題的,所以我把它做成管道。

result = {"SimulationA": {"time": 458,"cost": [12.35, 1.15, 66, 85], "error": 2.45 }, "SimulationB":{"time": 512,"cost": [12.35, 66], "error": 12.3 } } 

keys = result.keys() 

rows = [ 
    ',' + ','.join(result.keys()), 
    "time," + ','.join([ str(result[x]['time']) for x in keys]), 
    "cost," + ','.join([ '|'.join([ str(y) for y in result[x]['cost']]) for x in keys]), 
    "error," + ','.join([ str(result[x]['error']) for x in keys]) 
] 

to_write = '\n'.join(rows) 

with open('myfile.csv', 'w+') as f: 
    f.write(to_write)