在.csv文件中绘制Python中的正态分布

时间:2014-04-23 12:34:36

标签: python python-2.7 csv numpy matplotlib

以下脚本绘制了给定的一种数据的正态分布。

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文件列中的数据?

1 个答案:

答案 0 :(得分:4)

将数据写回文件似乎非常迂回,可能是稍后再读回来。为什么不创建数据列表?

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文件?" ,答案是:测试并查找进行。