Pandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列

Posted

技术标签:

【中文标题】Pandas df.mean() 抛出 TypeError:\'NoneType\' 对象不可调用或返回空系列【英文标题】:Pandas df.mean() throws TypeError: 'NoneType' object is not callable or returns empty SeriesPandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列 【发布时间】:2021-08-19 23:53:45 【问题描述】:

标题说明了一切。

df = pd.DataFrame("A":np.array([1,2,3,4]),"B":np.array([1,2,3,4]))
df_mean = df.mean(axis=0)
print(df_mean)

上面的代码输出一个空的系列对象:

Series([], dtype: float64)

在填充有 MNIST 数据的数据帧上使用 df.mean() 会引发以下堆栈跟踪:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-42-bab38039484e> in <module>
      2 
      3 X_train_class, y_train_class, X_valid_class, \
----> 4         y_valid_class, X_test_class, y_test_class = prepare_load_classification_data()
      5 X_train_class.mean()
      6 # ebm = ExplainableBoostingClassifier()

<ipython-input-37-b1dcfdd01adc> in prepare_load_classification_data()
     45     train_features, train_labels, dev_features, \
     46         dev_labels, test_features, test_labels = load_data()
---> 47     feature_mean, label_mean = train_features.mean(axis=0), train_labels.mean(axis=0)
     48 
     49     train_features = pd.DataFrame(data=np.where(train_features > feature_mean, 1, 0), columns=FEATURE_NAMES)

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\generic.py in mean(self, axis, skipna, level, numeric_only, **kwargs)
  11107         )
  11108         def mean(self, axis=None, skipna=None, level=None, numeric_only=None, **kwargs):
> 11109             return NDFrame.mean(self, axis, skipna, level, numeric_only, **kwargs)
  11110 
  11111         # pandas\core\generic.py:10924: error: Cannot assign to a method

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\generic.py in mean(self, axis, skipna, level, numeric_only, **kwargs)
  10718     def mean(self, axis=None, skipna=None, level=None, numeric_only=None, **kwargs):
  10719         return self._stat_function(
> 10720             "mean", nanops.nanmean, axis, skipna, level, numeric_only, **kwargs
  10721         )
  10722 

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\generic.py in _stat_function(self, name, func, axis, skipna, level, numeric_only, **kwargs)
  10703             return self._agg_by_level(name, axis=axis, level=level, skipna=skipna)
  10704         return self._reduce(
> 10705             func, name=name, axis=axis, skipna=skipna, numeric_only=numeric_only
  10706         )
  10707 

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\series.py in _reduce(self, op, name, axis, skipna, numeric_only, filter_type, **kwds)
   4150                 )
   4151             with np.errstate(all="ignore"):
-> 4152                 return op(delegate, skipna=skipna, **kwds)
   4153 
   4154     def _reindex_indexer(self, new_index, indexer, copy):

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\nanops.py in _f(*args, **kwargs)
     69             try:
     70                 with np.errstate(invalid="ignore"):
---> 71                     return f(*args, **kwargs)
     72             except ValueError as e:
     73                 # we want to transform an object array

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\nanops.py in f(values, axis, skipna, **kwds)
    122                     #  TypeError if called
    123                     kwds.pop("mask", None)
--> 124                     result = bn_func(values, axis=axis, **kwds)
    125 
    126                     # prefer to treat inf/-inf as NA, but must compute the func

TypeError: 'NoneType' object is not callable

这似乎与 pandas 或 numpy 的安装损坏有关,但在重新安装降级或启动新的 Conda 环境后,问题仍然存在。任何帮助将不胜感激!

【问题讨论】:

运行您提供给我的示例并使用以下数据框:A 2.5 B 2.5 dtype: float64 您能否提供您正在使用的 Pandas、Numpy 和 Conda 的版本? Numpy: 1.20.3 Pandas: 1.2.4 Conda 4.8.5 为了清楚起见,我在 Jupyter notebook Jupyter:1.0.0 中运行它,但在 .py 文件中存在相同的错误和行为 【参考方案1】:

我用 pandas 1.1.3 和 numpy 1.19.2 运行它并且工作。 我还在 Jupyter 中使用 pandas 1.2.3 和 numpy 1.19.5 运行它并运行。

我更新了所有内容并使用 pandas 1.2.4 和 numpy 1.20.2 运行它,它工作正常。

所以要么是因为 numpy,要么是因为不同的原因。

你真的只有这段代码吗?或者是否有其他代码可能会干扰您的 sn-p?

【讨论】:

我在新的命令提示符下运行了代码 sn-p,使用上述库激活了新的 conda 提示符。所以我真的不认为有任何代码可以干扰它【参考方案2】:

对我来说,问题是在导入 numpy 之前导入 pandas 引起的

所以而不是:

import pandas as pd
import numpy as np

我改成

import numpy as np
import pandas as pd

它解决了这个问题

【讨论】:

以上是关于Pandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas 平均和总和冲突

如何在熊猫 df 图中添加水平线? [复制]

pandas中axis的含义

如何更改 DataFrame 列的顺序?

如何更改 DataFrame 列的顺序?

如何更改 DataFrame 列的顺序?