Python 如何使用csv dictreader、matplotlib和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

我正在尝试创建一个简单的概率密度函数(pdf)图,使用csv dictreader、matplotlib和numpy从csv文件的一列中获取数据

有没有一种简单的方法可以将CSV DictReader与numpy阵列结合使用?下面是不起作用的代码。错误消息是unsized对象的TypeError:len(),我猜这与我的数据不是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]