web-dev-qa-db-fra.com

la série pandas reçoit l'erreur "Les données doivent être à une dimension"

Je suis nouveau sur les pandas & numpy. Je lance un programme simple

labels = ['a','b','c','d','e'] 
s = Series(randn(5),index=labels)
print(s)

obtenir l'erreur suivante

    s = Series(randn(5),index=labels)   File "C:\Python27\lib\site-packages\pandas\core\series.py", line 243, in
__init__
    raise_cast_failure=True)   File "C:\Python27\lib\site-packages\pandas\core\series.py", line 2950, in
_sanitize_array
    raise Exception('Data must be 1-dimensional') Exception: Data must be 1-dimensional

Une idée de ce que peut être le problème? J'essaie d'utiliser Eclipse sans utiliser ipython notebook. 

7
R Syed

Je soupçonne que vos importations sont erronées

Si vous ajoutez ceci à votre code

from pandas import Series
from numpy.random import randn

labels = ['a','b','c','d','e'] 
s = Series(randn(5),index=labels)
print(s)

a    0.895322
b    0.949709
c   -0.502680
d   -0.511937
e   -1.550810
dtype: float64

Ça fonctionne bien.

Cela dit et comme l'a souligné @jezrael, il est préférable d'importer les modules plutôt que de polluer l'espace de noms.

Votre code devrait ressembler à ceci à la place.

Solution 

import pandas as pd
import numpy as np

labels = ['a','b','c','d','e'] 
s = pd.Series(np.random.randn(5),index=labels)
print(s)
3
piRSquared

Il semble que vous ayez besoin de numpy.random.Rand pour random floats ou numpy.random.randint pour random integers:

import pandas as pd
import numpy as np

np.random.seed(100)
labels = ['a','b','c','d','e'] 
s = pd.Series(np.random.randn(5),index=labels)
print(s)
a   -1.749765
b    0.342680
c    1.153036
d   -0.252436
e    0.981321
dtype: float64

np.random.seed(100)
labels = ['a','b','c','d','e'] 
s = pd.Series(np.random.randint(10, size=5),index=labels)
print(s)
a    8
b    8
c    3
d    7
e    7
dtype: int32
2
jezrael