Невозможно получить среднее числовых столбцов в Pandas кадре данных - PullRequest
1 голос
/ 05 апреля 2020

Я получаю ошибку времени выполнения, когда пытаюсь получить средние значения моих числовых столбцов в моем Pandas кадре данных. Сначала я думал, что это связано с dtype, но я проверил, и (как вы можете видеть) они все числовые:

df = pd.read_csv(DATA_PATH, delimiter=',')
df.dtypes

id               object
age               int64
income          float64
children          int64
gender           object
region           object
married          object
car              object
savings_acct     object
current_acct     object
mortgage         object
pep              object
dtype: object
df.head(5)
id  age income  children    gender  region  married car savings_acct    current_acct    mortgage    pep
0   ID12101 48  17546.0 1   FEMALE  INNER_CITY  NO  NO  NO  NO  NO  YES
1   ID12102 40  30085.1 3   MALE    TOWN    YES YES NO  YES YES NO
2   ID12103 51  16575.4 0   FEMALE  INNER_CITY  YES YES YES YES NO  NO
3   ID12104 23  20375.4 3   FEMALE  TOWN    YES NO  NO  YES NO  NO
4   ID12105 57  50576.3 0   FEMALE  RURAL   YES NO  YES NO  NO  NO

Вот где я столкнулся проблемы:

# means
print("Means: \n")
print(df[["age","income","children"]].mean() + "\n")

Means: 

---------------------------------------------------------------------------
UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')

During handling of the above exception, another exception occurred:

UFuncTypeError                            Traceback (most recent call last)
<ipython-input-27-e56207deaccf> in <module>
      1 # means
      2 print("Means: \n")
----> 3 print(df[["age","income","children"]].mean() + "\n")

~/anaconda3/lib/python3.7/site-packages/pandas/core/ops/common.py in new_method(self, other)
     62         other = item_from_zerodim(other)
     63 
---> 64         return method(self, other)
     65 
     66     return new_method

~/anaconda3/lib/python3.7/site-packages/pandas/core/ops/__init__.py in wrapper(left, right)
    498         lvalues = extract_array(left, extract_numpy=True)
    499         rvalues = extract_array(right, extract_numpy=True)
--> 500         result = arithmetic_op(lvalues, rvalues, op, str_rep)
    501 
    502         return _construct_result(left, result, index=left.index, name=res_name)

~/anaconda3/lib/python3.7/site-packages/pandas/core/ops/array_ops.py in arithmetic_op(left, right, op, str_rep)
    195     else:
    196         with np.errstate(all="ignore"):
--> 197             res_values = na_arithmetic_op(lvalues, rvalues, op, str_rep)
    198 
    199     return res_values

~/anaconda3/lib/python3.7/site-packages/pandas/core/ops/array_ops.py in na_arithmetic_op(left, right, op, str_rep)
    149         result = expressions.evaluate(op, str_rep, left, right)
    150     except TypeError:
--> 151         result = masked_arith_op(left, right, op)
    152 
    153     return missing.dispatch_fill_zeros(op, left, right, result)

~/anaconda3/lib/python3.7/site-packages/pandas/core/ops/array_ops.py in masked_arith_op(x, y, op)
    110         if mask.any():
    111             with np.errstate(all="ignore"):
--> 112                 result[mask] = op(xrav[mask], y)
    113 
    114     result, _ = maybe_upcast_putmask(result, ~mask, np.nan)

UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')

Я пытался преобразовать числовые типы все в числа с плавающей точкой, чтобы они были согласованными, но это (что неудивительно) не имело никакого значения: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...