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

2 投票
1 回答
3984 浏览
提问于 2025-04-18 03:55

以下这个脚本可以绘制某种数据的正态分布。

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 个回答

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文件?",答案是:试试看就知道了。

撰写回答