ValueError:传递的项目数错误500,位置表示1,Python和Pandas

ValueError:传递的项目数错误500,位置表示1,Python和Pandas,python,python-2.7,pandas,matplotlib,Python,Python 2.7,Pandas,Matplotlib,我从.xlsx文件中只导入了两列,我想计算一些东西(平均值、偏差、百分比变化),然后我想绘制所有这些。第一部分并没有给我任何问题,但绘图确实有问题 我的代码如下所示: import matplotlib.pyplot as plt import numpy as np import pandas as pd import matplotlib.mlab as mlab import math df = pd.read_excel('KDPrviIzbor.xlsx', sheetname='L

我从.xlsx文件中只导入了两列,我想计算一些东西(平均值、偏差、百分比变化),然后我想绘制所有这些。第一部分并没有给我任何问题,但绘图确实有问题

我的代码如下所示:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib.mlab as mlab
import math

df = pd.read_excel('KDPrviIzbor.xlsx', sheetname='List1', index_col = 0)
ch = df.pct_change(periods=252)

ma = np.mean(ch)*100
std = np.std(ch)*100

x = np.linspace(-100,100,500)
plt.plot(x,mlab.normpdf(x,ma,std))

plt.show()
但当我运行代码时,我会出现以下错误:

Traceback (most recent call last):
File "C:/Users/David/PythonStuff/normal_distribution.py", line 21, in <module> plt.plot(x,mlab.normpdf(x,ma,std))
File "C:\Python27\lib\site-packages\matplotlib\mlab.py", line 1579, in normpdf return 1./(np.sqrt(2*np.pi)*sigma)*np.exp(-0.5 * (1./sigma*(x - mu))**2)
File "C:\Python27\lib\site-packages\pandas\core\ops.py", line 534, in wrapper dtype=dtype)
File "C:\Python27\lib\site-packages\pandas\core\series.py", line 220, in __init__ data = SingleBlockManager(data, index, fastpath=True)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 3383, in __init__ ndim=1, fastpath=True)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 2101, in make_block placement=placement)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 77, in __init__ len(self.values), len(self.mgr_locs)))
ValueError: Wrong number of items passed 500, placement implies 1`
回溯(最近一次呼叫最后一次):
文件“C:/Users/David/PythonStuff/normal_distribution.py”,第21行,plt.plot(x,mlab.normpdf(x,ma,std))中
文件“C:\Python27\lib\site packages\matplotlib\mlab.py”,第1579行,格式为normpdf返回1./(np.sqrt(2*np.pi)*sigma)*np.exp(-0.5*(1./sigma*(x-mu))**2)
文件“C:\Python27\lib\site packages\pandas\core\ops.py”,第534行,在包装器dtype=dtype中)
文件“C:\Python27\lib\site packages\pandas\core\series.py”,第220行,在_uinit__; data=SingleBlockManager中(数据,索引,fastpath=True)
文件“C:\Python27\lib\site packages\pandas\core\internals.py”,第3383行,在_uinit__;ndim=1,fastpath=True)
文件“C:\Python27\lib\site packages\pandas\core\internals.py”,第2101行,在make\u block placement=placement中)
文件“C:\Python27\lib\site packages\pandas\core\internals.py”,第77行,位于_uinit__; len(self.values)、len(self.mgr_locs)中
ValueError:传递的项目数错误500,放置意味着1`
我认为问题在于:

plt.plot(x,mlab.normpdf(x,ma,std))


但我不能解决它。有什么建议吗

ma
std
是示例中的
pandas.Series
对象。原因是,应用于
pandas.DataFrame
np.mean
返回
pandas.Series
。 然而,mlab.normpdf(x,ma,std)期望浮点值或numpy数组作为输入。 您可以通过
ma=float(ma)
简单地将
ma
std
转换为float。
我不建议像你在评论中指出的那样使用
int(ma)
,因为那样会去掉小数。

你能展示一下
df
的样子吗?e、 g.
df.head()
的输出。你能在不绘图的情况下尝试计算
y=mlab.normpdf(x,ma,std)
吗?我想你也会得到一个错误。您能显示
print ma
print std
的输出吗?我打赌它们不是浮动的,而是熊猫系列。@FabianRost,df.head()的输出是:VEP日期2005-05-16 4.1729 2005-05-17 4.1700 2005-05-18 4.3400 2005-05-19 4.3600 2005-05-20 4.3700打印输出(ma):VEP 7.14688数据类型:浮动64打印输出(std):VEP 19.335596数据类型:浮动64你好!我想出来了。行的正确代码是:plt.plot(x,mlab.normpdf(x,int(ma),int(std))。唯一的问题是我不知道为什么会这样。无论如何,谢谢@FabianRost的帮助:)Fabian,再次感谢。我使用了float(ma)和float(std),现在可以正常工作了。