• Автор записи:
  • Рубрика записи:Pandas
  • Время чтения:4 минут чтения
  • Комментарии к записи:0 комментариев

Чтобы устранить функцию Python, не реализованную для этого dtype: ошибка [how->mean,dtype->object], ключевые шаги включают проверку типов данных, преобразование нечисловых типов в числовые, использование выборочной агрегации для соответствующих столбцов, управление значениями NaN или использование пользовательских функций в Pandas.

Содержание

Когда возникает ошибка?

Сообщение об ошибке в функции Python не реализовано для этого типа dtype: [how->mean,dtype->object] обычно возникает при попытке выполнить операцию, не подходящую для типа данных объекта, с которым мы работаем. Это распространенная проблема в Python, особенно при манипулировании данными с использованием таких библиотек, как Pandas.

import pandas as pd

data = {
    'Date': ['2023-07-01', '2023-07-01', '2023-07-02'],
    'Item Description': ['Notebook', 'Pen', 'Pencil'],
    'Sales Amount': ['$10', 5, '$3']
}
sales_df = pd.DataFrame(data)
# Attempting to calculate the mean of 'Sales Amount'
try:
    print(sales_df['Sales Amount'].mean())
except Exception as e:
    print("Error:", e)

Выход:

Error: can only concatenate str(not "int") to str

Ниже приведен снимок экрана, показывающий выходные данные, снятые после запуска кода в редакторе PyCharm.

Сообщение об ошибке в функции Python не реализовано для этого типа dtype: [how->mean,dtype->object]

Как исправить ошибку

Существует пять различных способов обработки функции Python, которая не реализована для этого типа dtype: [how->mean,dtype->object]:

  1. Проверьте типы данных.
  2. Преобразование типов данных.
  3. Выборочная агрегация.
  4. Обработка значений NaN.
  5. Используйте пользовательские функции.

Давайте рассмотрим их один за другим, используя несколько наглядных примеров.

1. Проверьте данные для обработки функции

Мы можем использовать df.dtypes для проверки типов данных каждого столбца в нашем фрейме данных. Это помогает определить, какие столбцы вызывают проблему.

import pandas as pd

data = {'Age': [25, 40, 30],
        'Appointment Date': ['2023-06-01', '2023-06-02', '2023-06-03'],
        'Diagnosis Code': ['D123', 'A456', 'B789']}

df = pd.DataFrame(data)
print(df.dtypes)

Выход:

Age                  int64
Appointment Date    object
Diagnosis Code      object
dtype: object

1. Проверьте данные для обработки функции

2. Преобразуйте данные перед обработкой ошибки notimplementederror

Мы можем преобразовать нечисловые столбцы в числовые, если это необходимо, используя pd.to_numeric(), astype(float) или аналогичные функции.

Мы можем обрабатывать нечисловые значения или ошибки во время преобразования, используя такие аргументы, как error=’coerce’, которые заменяют не преобразуемые значения на NaN.

import pandas as pd

data = {'Age': [25, 40, 30],
        'Appointment Date': ['2023-06-01', '2023-06-02', '2023-06-03'],
        'Diagnosis Code': ['D123', 'A456', 'B789']}
df = pd.DataFrame(data)
df['Diagnosis Code'] = pd.to_numeric(df['Diagnosis Code'], errors='coerce')
print(df)

Выход:

   Age Appointment Date  Diagnosis Code
0   25       2023-06-01             NaN
1   40       2023-06-02             NaN
2   30       2023-06-03             NaN

Ошибка notimplementederror в Python

3. Функция agg не удалась [how->mean,dtype->object] с использованием выборочного агрегирования

Применяйте среднее значение (или другие функции) только к столбцам с числовыми типами данных.

Мы можем использовать условный выбор или метод select_dtypes для изоляции числовых столбцов.

import pandas as pd
import numpy as np

data = {'Age': [25, 40, 30],
        'Appointment Date': ['2023-06-01', '2023-06-02', '2023-06-03'],
        'Diagnosis Code': ['D123', 'A456', 'B789']}

df = pd.DataFrame(data)

numeric_cols = df.select_dtypes(include=[np.number])
print(numeric_cols.mean())

Выход:

Age    31.666667
dtype: float64

Функция agg не удалась [how->mean,dtype->object] с использованием выборочного агрегирования

4. Обработка значений nan

Если столбцы наших объектов содержат смешанные типы (например, числа и строки) и мы преобразовали их в числовые, обрабатывайте значения NaN, возникающие в результате преобразования.

Мы можем использовать такие методы, как fillna() или dropna(), для обработки значений NaN.

import pandas as pd
import numpy as np

data = {'Age': [25, 40, 30],
        'Appointment Date': ['2023-06-01', '2023-06-02', '2023-06-03'],
        'Diagnosis Code': ['D123', 'A456', 'B789']}

df = pd.DataFrame(data)
df['Income'] = pd.Series([50000, np.nan, 45000])
df['Income'].fillna(df['Income'].mean(), inplace=True)
print(df)

Выход:

   Age Appointment Date Diagnosis Code   Income
0   25       2023-06-01           D123  50000.0
1   40       2023-06-02           A456  47500.0
2   30       2023-06-03           B789  45000.0

Обработка значений nan

5. С использованием пользовательской функции

Для столбцов со смешанными типами данных, где нам все равно необходимо вычислить среднее значение или другие статистические функции, рассмотрите возможность написания пользовательских функций.

import pandas as pd

data = {'Age': [25, 40, 30],
        'Appointment Date': ['2023-06-01', '2023-06-02', '2023-06-03'],
        'Diagnosis Code': ['D123', 'A456', 'B789']}

df = pd.DataFrame(data)
def custom_mean(column):
    numeric = pd.to_numeric(column, errors='coerce').fillna(0)
    return numeric.mean()

survey_data = {'Response': ['Yes', 'No', '3', '4', '5']}
df_survey = pd.DataFrame(survey_data)
print(custom_mean(df_survey['Response']))

Выход:

2.4

С использованием пользовательской функции

Добавить комментарий