2016-10-23 7 views
1

次のコードでデータをシャッフルしようとしています。データセットをランダム化しようとすると奇妙なエラーが発生する

import pandas as pd 
import numpy as np 

from sklearn.naive_bayes import MultinomialNB 
data = pd.read_csv('dataset.txt') 
np.random.shuffle(data) 

これを実行すると、次のエラーが表示されます。私はこのエラーがどこから来ているのかわかりません。

Traceback (most recent call last): 
File "sample2.py", line 12, in <module> 
np.random.shuffle(data) 
File "mtrand.pyx", line 4668, in mtrand.RandomState.shuffle (numpy/random /mtrand/mtrand.c:30498) 
File "mtrand.pyx", line 4671, in mtrand.RandomState.shuffle (numpy/random/mtrand/mtrand.c:30438) 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/core/frame.py", line 1992, in __getitem__ 
return self._getitem_column(key) 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/core/frame.py", line 2004, in _getitem_column 
result = result[key] 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/core/frame.py", line 1992, in __getitem__ 
return self._getitem_column(key) 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/core/frame.py", line 1999, in _getitem_column 
return self._get_item_cache(key) 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/core/generic.py", line 1345, in _get_item_cache 
values = self._data.get(item) 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/core/internals.py", line 3225, in get 
loc = self.items.get_loc(item) 
File "/Users/marcvanderpeet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/indexes/base.py", line 1878, in get_loc 
return self._engine.get_loc(self._maybe_cast_indexer(key)) 
File "pandas/index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas/index.c:4027) 
    File "pandas/index.pyx", line 157, in pandas.index.IndexEngine.get_loc (pandas/index.c:3891) 
    File "pandas/hashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12408) 
    File "pandas/hashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12359) 

ここで何が問題になるのでしょうか?

答えて

3

パンダのデータフレームにnumpy関数を適用しています。

あなたはnumpyの配列にデータフレームを変換して、それをシャッフルすることができます

np.random.shuffle(data.values) 

それとも、パンダの機能を使用することができます

data = data.sample(len(data)) 
+0

素敵なパンダのトリックです! – jadsq

0

私は本当にトレースバック全体を理解していませんが、私にとっては、エラーは単純に、データフレームが数値配列ではないという事実から来ています。これを修正するには、data.valuesを使用して、データフレームの実際の配列を使用してください。

np.random.shuffleは、入力が有効な配列であるかどうかをチェックせず、通常の配列と同じ方法でデータフレームのデータを操作して取得しようとします。getitemに関するすべてのエラー等々。

関連する問題