我在我的一个函数中使用scipy的stats.scoreatpercentile。 但是,每当我运行产生错误的东西时 - 之后会修复 - 我必须运行from scipy import stats
,否则我的程序开始告诉我pandas.DataFrame do not have the attribute "scoreatpercentile"
。这是某种错误,我"丢失"了导入的模块还是我做错了什么?
正如我们所讨论的,很可能是你把变量stats
分配给了另一个变量,而不是你导入的子模块。
这就是为什么使用以下内容被认为是不好的做法:
from x import y
# do something with y
因为它会污染您的命名空间。使用以下内容始终被认为是更好的主意:
import x
# do something with x.y
如果使用y
而不是x.y
的理由是因为x
是一个非常长的名称,人们使用:
import reallylongx as x
为了减轻写额外字母的痛苦(如np
而不是numpy
,pd
而不是pandas
,mpl
而不是matplotlib
(。
看看这个例子
from scipy import stats
import numpy as np
a = np.arange(20)
stats.scoreatpercentile(a, 10)
1.9000000000000001
数组是数字类型。这就解释了为什么你会得到熊猫。数据帧没有属性"scoreatpercentile">