NameError:名称“意思”未定义
Posted
技术标签:
【中文标题】NameError:名称“意思”未定义【英文标题】:NameError: name 'mean' is not defined 【发布时间】:2021-12-14 07:36:12 【问题描述】:计算基本统计数据,我得到以下工作正常:
import pandas as pd
max(df[Price])
min(df[Price])
但是,这会返回一个错误:
mean(df[Price])
NameError: name 'mean' is not defined
我只是想了解其中的逻辑。
这个效果很好:
df[Price].mean()
点之后有哪些统计信息,哪些必须换行?
【问题讨论】:
尝试将其理解为“点后”和“列换行”并不是一个好主意。您可能想阅读 Python 教程以了解这两个实际上是什么(分别是方法调用和函数调用)。 @AKX 当然,非常感谢。我读了很多,也许这就是问题所在。虽然方法和函数之间的区别很明显,但从统计学家的角度来看,它只是没有意义min
和 max
是 python 默认提供的函数。没有默认的mean
函数,因此当您尝试mean(df[Price])
时,python 会尝试查找任何名为mean
的用户定义函数,并在找不到任何名为mean
的函数时引发NameError
。 df[Price].mean()
是Pandas
库提供的函数。参考here
把from statistics import mean
放在你的脚本的顶部,你会得到一个mean
函数,它接受一个可迭代作为它的参数,类似于内置的max
和min
函数。
【参考方案1】:
min()
和 max()
是作为 Python 内置函数提供的函数。
您可以在任何可迭代对象上使用它们,包括 Pandas 系列,这就是您所做的工作的原因。
Pandas 还提供 .min()
和 .max()
作为系列和数据帧的方法,例如df["Price"].min()
也可以工作。系列函数的完整列表是here; DataFrame 函数的完整列表是here。
如果您确实想使用名为 mean()
的免费函数,例如当您有一些不是 Pandas 系列的东西并且您不想将其转换为一个时,实际上是一个 does exist in the Python standard library,但您必须导入它:
from statistics import mean
【讨论】:
好吧,为了代码一致,也许我应该总是导入pandas,总是引用方法而忘记函数。 如果您正在使用 Pandas 对象,那么是的,尽可能使用这些方法可能会更好(也可能更快)。以上是关于NameError:名称“意思”未定义的主要内容,如果未能解决你的问题,请参考以下文章