2014-04-23 49 views
1

以下腳本繪製給定數據類型的正態分佈。使用.csv文件在Python中繪製正態分佈

import numpy as np 
import scipy.stats as stats 
import pylab as pl 

h = sorted ([0.9, 0.6, 0.5, 0.73788,...]) #Data that I would like to change 

fit = stats.norm.pdf(h, np.mean(h), np.std(h)) 
pl.plot(h,fit,'-o') 
pl.show()  

我想找到如何繪製,而不必手動引入它從.csv文件所採取的數據。假設需要的數據位於給定.csv文件的第二列中,我知道要做類似的事情來隔離數據的方式是創建一箇中間文件,但這可能甚至不是必需的。

with open('infile.csv','rb') as inf, open('outfile.csv','wb') as outf: 
    incsv = csv.reader(inf, delimiter=',') 
    outcsv = csv.writer(outf, delimiter=',') 
    outcsv.writerows(row[1] in incsv) 

反正基本上我的兩個問題這裏,
- 我會正確地寫爲.csv的第二列到一個新的.csv文件?
- 我怎樣才能合併這兩個腳本,以便我可以將第一個靜態數據替換爲.csv文件列中的數據?

回答

3

將數據寫回到文件似乎非常迂迴,大概在稍後再讀回它。爲什麼不創建數據列表?

def import_data(filename): 
    """Import data in the second column of the supplied filename as floats.""" 
    with open(filename, 'rb') as inf: 
     return [float(row[1]) for row in csv.reader(inf)] 

然後,您可以調用這個函數來得到你想要繪製

h = sorted(import_data('infile.csv')) 

至於你的問題數據「我會正確地寫爲.csv的第二列到一個新的。 csv文件?「,答案是:測試一下,找出答案。