web-dev-qa-db-ja.com

「ValueError:ラベル['タイムスタンプ']が軸に含まれていません」エラー

私はこのコードを持っています、私はファイルから列 'timestamp'を削除したいです: .data しかしできません。それはエラーを示しています
"ValueError:ラベル['タイムスタンプ']が軸に含まれていません"どうすれば修正できますか

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
plt.rc("font", size=14)
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.cross_validation import KFold
from sklearn.cross_validation import train_test_split



data = pd.read_table('u.data')
data.columns=['userID', 'itemID','rating', 'timestamp']
data.drop('timestamp', axis=1)


N = len(data)
print data.shape
print list(data.columns)
print data.head(10)
7
avaj

人が直面し、気付かれることのない最大の問題の1つは、ヘッダーを挿入する際のu.dataファイルでは、データの行間の分離とまったく同じである必要があることです。たとえば、タブを使用してタプルを区切る場合は、スペースを使用しないでください。

u.dataファイルにヘッダーを追加し、行の項目間で使用されたのと同じ数の空白でヘッダーを正確に区切ります。 PS:崇高なテキストを使用してください。メモ帳/メモ帳++が機能しない場合があります。

5
Aditya

「ValueError:ラベル['タイムスタンプ']が軸に含まれていません」

ファイルにヘッダーがないため、ファイルをロードした方法でdfが得られました。ここで、列名はデータの最初の行です。存在しないcolunmtimestampにアクセスしようとしました。

あなたのu.dataにはヘッダーがありません

$head u.data                   
196 242 3   881250949
186 302 3   891717742

したがって、ヘッダーを追加しない限り、列名を操作することはできません。ヘッダーをファイルu.dataに追加できます。例:テキストエディタで開き、上部にa b c timestamp行を追加しました(これはタブ区切りのファイルのようです。ヘッダーを追加するときはスペースを使用しないように注意してください。そうしないとフォーマットが壊れます)

$head u.data                   
a   b   c   timestamp
196 242 3   881250949
186 302 3   891717742

これでコードが機能し、data.columnsが返されます

Index([u'a', u'b', u'c', u'timestamp'], dtype='object')

そして、作業コードの残りのトレースは今です

(100000, 4) # the shape
['a', 'b', 'c', 'timestamp'] # the columns
     a    b  c  timestamp # the df
0  196  242  3  881250949
1  186  302  3  891717742
2   22  377  1  878887116
3  244   51  2  880606923
4  166  346  1  886397596
5  298  474  4  884182806
6  115  265  2  881171488
7  253  465  5  891628467
8  305  451  3  886324817
9    6   86  3  883603013

ヘッダーを追加したくない場合

または、インデックス(おそらく3)を使用して列 'timestamp'を削除できます。これを行うには、下のdf.ixを使用して、すべての行、列インデックス0からインデックス2を選択し、インデックス3の列を削除します。

data.ix[:, 0:2]
2
bakkal

私はそれをこのようにします:

data = pd.read_table('u.data', header=None,
                     names=['userID', 'itemID','rating', 'timestamp'],
                     usecols=['userID', 'itemID','rating']
)

小切手:

In [589]: data.head()
Out[589]:
   userID  itemID  rating
0     196     242       3
1     186     302       3
2      22     377       1
3     244      51       2
4     166     346       1
0
MaxU