Python 如何使用csv dictreader、matplotlib和numpy创建概率密度函数图?
我正在尝试创建一个简单的概率密度函数(pdf)图,使用csv dictreader、matplotlib和numpy从csv文件的一列中获取数据 有没有一种简单的方法可以将CSV DictReader与numpy阵列结合使用?下面是不起作用的代码。错误消息是unsized对象的TypeError:len(),我猜这与我的数据不是numpy数组格式有关?我的数据也有负数和正数。提前谢谢Python 如何使用csv dictreader、matplotlib和numpy创建概率密度函数图?,python,csv,numpy,matplotlib,scipy,Python,Csv,Numpy,Matplotlib,Scipy,我正在尝试创建一个简单的概率密度函数(pdf)图,使用csv dictreader、matplotlib和numpy从csv文件的一列中获取数据 有没有一种简单的方法可以将CSV DictReader与numpy阵列结合使用?下面是不起作用的代码。错误消息是unsized对象的TypeError:len(),我猜这与我的数据不是numpy数组格式有关?我的数据也有负数和正数。提前谢谢 import easygui import csv import scipy.stats from numpy
import easygui
import csv
import scipy.stats
from numpy import*
from pylab import*
filename= easygui.fileopenbox(msg='Altitude outlier graph', title='select file', filetypes=['*.csv'], default='X:\\')
alt_file=open(filename)
x=[]
for row in csv.DictReader(alt_file):
x.append(float(row['Dist_90m(nmi)']))
a=scipy.stats.pdf_moments(x)
prob, bins, patches= hist(a, 10,align='left',facecolor='green')
ylabel('probability density function')
show()
线路
a=scipy.stats.pdf_moments(x)
也就是说,a
是一个函数,您必须以某种方式获取它的值
所以我修改了这行:
prob, bins, patches= hist([a(i/100.0) for i in xrange(0,100,1)], 10, align='left', facecolor='green')
并用我的样本数据生成了这张图
现在我的统计数据已经非常陈旧了,我不确定你是否通常使用0-1以上的pdf格式,但你可以从中找到答案
如果您确实需要遍历一个浮点范围,range
和xrange
不会生成浮点,因此一种简单的方法是生成大数并进行除法;因此a(i/100.0)
而不是a(i)表示x范围内的i(0,1,0.01)
谢谢你的帮助!!下面的代码生成了一个概率密度函数图:我仍然在格式化它时遇到一些问题,但我认为这是一个好的开始
import easygui
import csv
import scipy.stats
import numpy
from pylab import*
filename= easygui.fileopenbox(msg='Altitude outlier graph', title='select file', filetypes=['*.csv'], default='X:\\herring_schools\\')
alt_file=open(filename)
a=[]
for row in csv.DictReader(alt_file):
a.append(row['Dist_90m(nmi)'])
y= numpy.array(a, float)
pdf, bins, patches=hist(y, bins=6, align='left',range=None, normed=True)
ylabel('probability density function')
xlabel('Distance from 90m contour line(nm)')
ylim([0,1])
show()
错误消息有一个回溯,它显示了确切的代码行。请提供完整的错误消息,包括对失败代码行的回溯。很好,但对您提到的最后一个问题使用numpy.arange——它对浮点数也很好!)您还可以使用
numpy.r
例如r_[2:3:5j]
->数组([2,2.25,2.5,2.75,3.])
,因此在您的情况下r_[:1:100j]
。