как выбрать определенные столбцы в таблице с помощью np.r__ в dataset.loc и работать со строковыми данными - PullRequest
0 голосов
/ 19 октября 2019

Я хотел бы классифицировать проблему, в которой строки данных имеют нечто похожее на some rows of tables

Чтобы разделить для проверки данных поезда:

x_train,x_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)

Method 1:
X = dataset.loc[np.r_[0:5, 7:26]].values
y = dataset.loc[np.r_[6]].values

Method 2:
X = dataset.loc[:, ['x1', 'x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x12','x13','x14','x15','x16','x17','x18','x19','x20','x21','x22','x23','x24','x25','x26']].values
y = dataset.loc[:, ['y']].values

Первый метод сталкивается с этой проблемой:

ValueError: Found input variables with inconsistent numbers of samples: [24, 1]

, а второй -ХОРОШО. Я не люблю писать все столбцы, но не знаю, как решить проблему первого метода.

Кроме того, поскольку данные являются строковыми, я сталкиваюсь с этой ошибкой:

ValueError: could not convert string to float: 'id8053'

Я пытался решить с помощью:

X = X.apply(lambda x: pd.factorize(x)[1])
y = y.apply(lambda x: pd.factorize(x)[0])

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

AttributeError: 'numpy.ndarray' object has no attribute 'apply'   

Что не так?

1 Ответ

1 голос
/ 19 октября 2019

np.r_ должно нормально работать в вашем случае. Method 1 пропустил строки. Вы нарезаете на целочисленные индексные столбцы (т. Е. Нарезаете по целочисленной позиции столбцов), поэтому вам нужно использовать .iloc с np.r_ для столбцов и указать : для строк

Попробуйте это ( обратите внимание на правый конец фрагментов в np.r_ добавлено 1, потому что .iloc игнорирует правый конец, в то время как loc сохраняет его )

Method 1:
X = dataset.iloc[:, np.r_[0:6, 7:27]].values
y = dataset.iloc[:, np.r_[7]].values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...