首页 > 解决方案 > DataError:没有要聚合的数字类型

问题描述

我将按性别描述男性和女性群体,以可视化每个值的流失率(1-保留率)如何。

我的输出

df_data.groupby(by='gender')['Churn'].mean()



error
---------------------------------------------------------------------------
DataError                                 Traceback (most recent call last)
<ipython-input-46-75992efc6958> in <module>()
----> 1 df_data.groupby(by='gender')['Churn'].mean()

1 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/groupby/groupby.py in mean(self, numeric_only)
   1396             "mean",
   1397             alt=lambda x, axis: Series(x).mean(numeric_only=numeric_only),
-> 1398             numeric_only=numeric_only,
   1399         )
   1400 

/usr/local/lib/python3.7/dist-packages/pandas/core/groupby/groupby.py in _cython_agg_general(self, how, alt, numeric_only, min_count)
   1051 
   1052         if len(output) == 0:
-> 1053             raise DataError("No numeric types to aggregate")
   1054 
   1055         return self._wrap_aggregated_output(output, index=self.grouper.result_index)

DataError: No numeric types to aggregate

标签: pythonpandasdataframepandas-groupbynumeric

解决方案


您的所有列,甚至那些看起来像数字的列,都是字符串。.astype(int)您必须在应用之前将“数字”列转换为数字列.mean()。例如:

df.tenure = df.tenure.astype(int)

推荐阅读