web-dev-qa-db-fra.com

Spyder Python "Les tableaux d'objets ne sont actuellement pas pris en charge"

J'ai un problème dans Anaconda Spyder (Python).

Le type de tableau d'objets ne peut pas être vu sous Windows 10 dans le variable Explorer. Si je clique sur X ou Y , je vois une erreur:

les tableaux d'objets ne sont actuellement pas pris en charge.

J'ai Win 10 Home 64bit (i7-4710HQ) et Python 3.5.2 | Anaconda 4.2.0 (64 bits) [MSC v.1900 64 bits (AMD64)]

Screenshot

30
Honza

( Développeur Spyder ici ) La prise en charge des tableaux d’objets sera ajoutée à Spyder 4, à paraître en 2019.

23
Carlos Cordoba

Un bon exemple est ici

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dataset = pd.read_csv('Salary_Data.csv') #in your case right name of your file
X=dataset.iloc[:,:-1].values   #this will convert dataframe to object
df = pd.DataFrame(X)

Vous pouvez afficher les données dans le cadre de données qui convertit un tableau en un cadre de données.

Et la variable Explorer accepte le dataframe. Le code ci-dessus est correct et vérifié

25
Aviator

J'ai utilisé la même chose sans dataFrame et .values.
Cela a fonctionné pour moi.

x = dataset.iloc[:, :-1]
y = dataset.iloc[:,3]
12
user10264987

Solution: rétrograder la version de Spyder vers la version 3.2.0

Vous pouvez le faire en allant sur anaconda-navigator.

Si vous suivez le cours Udemy sur l'apprentissage automatique, l'instructeur utilise probablement une version plus ancienne de spyder et cela fonctionne pour lui. Dans les versions plus récentes telles que 3.2.8, cela ne fonctionne pas, mais peut être incorporé dans les futures versions.

9
kaushalpranav

J'ai analysé le code jusqu'au point qui pourrait échouer pour vous.

Il semble que l'éditeur de tableaux de Spyder ne supporte pas l'affichage de tableaux de types mélangés (tableaux d'objets).

Ici vous pouvez voir le formats supportés .

Quelque chose me troublait la première fois que je l'utilisais: vous recevez le même éditeur lorsque vous cliquez sur un jeu de données que lorsque vous cliquez sur une variable tableau.

Dans le cas d'une variable de type array , vous recevez un ArrayEditor widget. Je pense que cet appel est fait ici .

Mais dans le cas d’une variable de type DataFrame , vous recevez un DataFrameEditor . Je pense que cet appel est fait ici

Le problème est que les deux widgets se ressemblent plus ou moins, on a donc tendance à penser qu'ils obtiennent le même résultat dans les deux cas, mais le DataFrameEditor permet de combiner types et le ArrayEditor pas.

Vous pouvez essayer d'inspecter les variables de tableau dans la console IPython jusqu'à ce que le support soit enfin publié dans Spyder pour les widgets appropriés.

6
yucer

Utilisez le code suivant:

dataset = pd.read_csv('Data.csv')
X = pd.DataFrame(dataset.iloc[:, :-1].values)
4
gsyal

Tant que vos types de variables ne sont pas identiques et que l'explorateur de variable vous le voyez comme un objet, cela signifie que la variable doit être convertie au même type dans votre cas. Vous pouvez le réparer en utilisant fit_transform ():

Voici une partie liée du code dans ce tutoriel:

from sklearn.preprocessing import LabelEncoder , OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_1.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
4
EqSan

Cela est dû au fait que le tableau a plus d'un type de données, il ne peut donc pas afficher un objet avec plus d'un type de données car il ne peut sélectionner qu'un seul type. Mais s'il ne possède qu'un seul type de données, le type est 'float64' On peut le voir.

4
Puru Agarwal

Vous pouvez faire deux choses pour contourner le visualiseur de variables dans Spyder. Vous pouvez soit

A) utilisez "print (X)" pour révéler le contenu de X, ou

B) Utilisez simplement la console IPython en tapant simplement X et en appuyant sur Entrée. Cela vous permet également de révéler rapidement si les fonctions ML décrites font leur travail.

3
Joe Almeida

Avec la version mise à jour de Spyder, vous ne pouvez plus voir les tableaux mélangés à l'aide de la variable Explorer. Vous pouvez imprimer le tableau à la place dans la console pour l'inspecter.

2
Avi

Il n’a pas encore été pris en charge par Spyder, mais vous pouvez utiliser IPyhon Console pour imprimer ces valeurs en y tapant directement le nom de la variable.

2
Gurbaksh Singh

Cela a fonctionné pour moi:

import pandas as pd
labels = pd.read_csv('labels/labels.csv')
# object arrays are currently not supported exception
breeds = labels.breed.unique()
# Supported Version 
# working fine
breeds = pd.DataFrame(labels.breed.unique())
1
Anubhav Singh

Ajouter

X = pd.DataFrame (X)

convertir un objet X en dataframe qui peut être vérifié dans spyder également sans erreur.

Travaillé pour moi!

1
Keya Kashem

J'ai eu un problème similaire, car j'ai insisté pour utiliser le format exact de la variable y comme pour x, c'est-à-dire x[: , 0] = labelencoder_x.fit_transform(x[:,0]), et j'ai utilisé y[:] = labelencoder_y.fit_transform(y[:]) *(taking into account the syntax for the fit transform for y)*

Ce qui précède a créé le type pour y_test Et y_train"objet" qui ne peuvent pas être visualisés sur Spyder dans l'explorateur de variables.

Quand j'ai utilisé la ligne exacte utilisée par l'instructeur: y = labelencoder_y.fit_transform(y). Le type de données a été remplacé par int64 Et peut être visualisé dans l'explorateur de variables.

1
Laevashan

Si les données sont du même type, exemple int ou float, elles s'afficheront dans la variable Explorer, sinon, elles ne seront pas prises en charge si les données ont string et int, par exemple.

Mais il existe une solution pour vérifier les données, vous pouvez le faire dans la console IPython.

0
Krishan

J'ai eu le même problème. Le problème était la ligne

oneHotEncoder.fit_transform(X).toarray()

Ce qui n'assigne pas les données au tableau X. Au lieu de cela, la ligne suivante devrait résoudre le problème:

X=oneHotEncoder.fit_transform(X).toarray()
0
davyPy

C'est parce que les données ne sont pas codées. Toutes les données catégoriques doivent être "encodées". Après avoir examiné les données dans la variable Explorer de votre sypder ( https://i.stack.imgur.com/uApwt.jpg ), il est clair que X contient des données sur un pays donné (comme [France , 44.0, 72000]), le nom du pays doit donc être codé et de la même manière y contient "Oui" ou "Non", il doit donc également être codé

Ajoutez le code suivant après la ligne 21, vous pourrez voir le tableau d'objets

# Encoding categorical data

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

'''
To prevent the machine learning equations from thinking 
(if there are more than one country) that one country is greater than 
another, use the concept of dummy variables    
''' 
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()

'''
Since y is dependent variable, the machine learning model will know 
that its a category, so we are going to use only the LableEncoder()
'''
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
0
shivp0616