функция отбрасывания, возвращающая KeyError | Pandas - PullRequest
0 голосов
/ 24 февраля 2020

Я учусь на олимпиаде по науке о данных и столкнулся с небольшой проблемой. Все, что я сделал, это преобразовал значения в строке со значениями в диапазоне от 2 до 8 в хорошие или плохие, используя корзину, затем я использовал кодировщик меток, чтобы сделать их 1 или 0

при запуске этого кода:

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, LabelEncoder

#load our data file
data = pd.read_csv("data.csv", delimiter=";")

#classify wines as good or bad
bins = (1,5,8)
group_names = ['bad', "good"]
data["quality"] = pd.cut(data["quality"], bins=bins, labels=group_names)
print(data["quality"].unique())

#list the labels as good or bad to 1 or 0
label_quality = LabelEncoder()
data["quality"] = label_quality.fit_transform(data["quality"])

#create our feature ad result sets
X = data.drop(data["quality"], axis=1)
y = data["quality"]

#create our training sets
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=10)

print(data.head(100))

я сталкиваюсь с ошибкой:

Traceback (most recent call last):
  File "main.py", line 21, in <module>    X = data.drop(data["quality"], axis=1)
  File "/home/runner/.local/share/virtualenvs/python3/lib/python3.8/site-packages/pandas/core/frame.py", line 3990, in drop    return super().drop(
  File "/home/runner/.local/share/virtualenvs/python3/lib/python3.8/site-packages/pandas/core/generic.py", line 3936, in drop    obj = obj._drop_axis(labels, axis, level=level, errors=errors)
  File "/home/runner/.local/share/virtualenvs/python3/lib/python3.8/site-packages/pandas/core/generic.py", line 3970, in _drop_axis    new_axis = axis.drop(labels, errors=errors)
  File "/home/runner/.local/share/virtualenvs/python3/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 5018, in drop    raise KeyError(f"{labels[mask]} not found in axis")
KeyError: '[0 0 0 ... 1 0 1] not found in axis'

он говорит, что мои значения строк не найдены на оси, но я уже указал одну ось, поэтому не должен ли он ее обрезать?

1 Ответ

2 голосов
/ 24 февраля 2020

На самом деле в вашем коде python есть ошибка, функция перетаскивания принимает имена столбцов как список, а не сам столбец, просто попробуйте ниже кода, он должен нормально работать

#create our feature ad result sets
y = data["quality"]
X = data.drop(["quality"], axis=1)

и еще одна вещь перед удалением Вы должны скопировать этот столбец в y, иначе он выдаст ошибку, так как столбец 'quality' был удален

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