Я использую google colab, все обновлено и по-прежнему получаю эту ошибку TypeError: drop () получил неожиданный аргумент ключевого слова ‘axis’

#python #pandas #dataframe

#python #pandas #dataframe

Вопрос:

Я использую google colab, все обновлено и по-прежнему получаю эту ошибку TypeError: drop () получил неожиданный аргумент ключевого слова ‘axis’. Что я делаю не так? Ошибка исходит из последних двух строк кода. Если я получаю свои данные, используя pandas dataframe из массива, он работает нормально. Вот вывод ошибки.

 import numpy as np
import pandas as pd
import io

from google.colab import files
uploaded = files.upload()

admissions = pd.read_csv(io.BytesIO(uploaded['student_data.csv']))


# Make Dummy variables for rank
data = pd.concat([admissions, pd.get_dummies(admissions['rank'], prefix='rank')], axis=1)

# Drop the column in which the dummy variables was created from
data.pop('rank')

# Standardize features
for field in ['gre', 'gpa']:
    # get the mean and standard deviations
    mean, std = data[field].mean(), data[field].std()
    
    # get the ...
    data.loc[:,field] = (data[field] -mean) / std
    
# split the random 10% of the data for testing
np.random.seed(42)

# takes away 90% data, test_data = data.index[sample], data.drop(sample) # removes the 90% and stores the remaining 10% into test_data
sample = np.random.choice(data.index, size=int(len(data)*0.9), replace=False) 

# Split into features and targets
features, targets = data.drop('admit', axis=1), data['admit'] # takes the admit column away and store the remaining in the features and the # admin in the targets
features_test, targets_test = test_data.drop('admit', axis=1), test_data['admit']
 

Вот вывод ошибки

  TypeError                                 Traceback (most recent call last)

<ipython-input-1-9293df238858> in <module>()
     31 
     32 # Split into features and targets
---> 33 features, targets = data.drop('admit', axis=1), data['admit'] # takes the admit column away and store the remaining in the features and the # admin in the targets
     34 features_test, targets_test = test_data.drop('admit', axis=1), test_data['admit']

TypeError: drop() got an unexpected keyword argument 'axis'
 

Комментарии:

1. Можете ли вы проверить type(data) перед вызовом drop и pd.__version__ . Я не могу воспроизвести вашу ошибку ни в одной из последних версий pandas. Даже pd.Series.drop принимает axis ключевое слово.

2. Тип данных <class ‘pandas.core.frame . DataFrame’>

3. Добро пожаловать в SO. Это pandas вопрос, и он не имеет ничего общего с machine-learning или deep-learning — пожалуйста, используйте соответствующие теги, а не нерелевантные (отредактированные).

Ответ №1:

Не могли бы вы попробовать эту альтернативу?

 data.drop(columns=['admit'])
 

В общем, это должно возвращать то же самое, что и у вас. Но время от времени, когда я получал одни и те же ошибки, это работает.

Комментарии:

1. Это не сработало. Это привело к аналогичной ошибке. TypeError: drop() получил неожиданный аргумент ключевого слова ‘columns’

Ответ №2:

Я пытаюсь воспроизвести ваш код таким образом в Colab:

 import pandas as pd
import numpy as np
admissions = pd.DataFrame({"gre": [5,6,5,1,21,5,8], 
                          "gpa": [1,2,2,2,3,1,4], 
                          "rank": ['a','a','b','c','a','b','a'],
                           "admit": [0,1,1,1,0,1,1]})
test_data = pd.DataFrame({"gre": [5,6,5], 
                          "gpa": [3,1,4], 
                          "rank": ['a','b','a'],
                           "admit": [0,1,1]})
 

Затем скопируйте свой код от # Make Dummy variables for rank начала до конца. Это не приводит к ошибке. Я бы посоветовал вам добавить print(data.head()) перед тем # Split into features and targets , как посмотреть, как это data выглядит. В моем случае этот код

 print(data)
# Split into features and targets
features, targets = data.drop('admit', axis=1), data['admit'] # takes the admit column away and store the remaining in the features and the # admin in the targets
features_test, targets_test = test_data.drop('admit', axis=1), test_data['admit']
print(features)
print(targets)
 

выдает результат, подобный этому:

         gre       gpa  admit  rank_a  rank_b  rank_c
0 -0.357384 -1.069045      0       1       0       0
1 -0.201028 -0.133631      1       1       0       0
2 -0.357384 -0.133631      1       0       1       0
3 -0.982806 -0.133631      1       0       0       1
4  2.144304  0.801784      0       1       0       0
5 -0.357384 -1.069045      1       0       1       0
6  0.111682  1.737198      1       1       0       0
        gre       gpa  rank_a  rank_b  rank_c
0 -0.357384 -1.069045       1       0       0
1 -0.201028 -0.133631       1       0       0
2 -0.357384 -0.133631       0       1       0
3 -0.982806 -0.133631       0       0       1
4  2.144304  0.801784       1       0       0
5 -0.357384 -1.069045       0       1       0
6  0.111682  1.737198       1       0       0
0    0
1    1
2    1
3    1
4    0
5    1
6    1