2017-09-15 12 views
-7

最初私はパンダを使用してユーザID MOVIEIDテーブルを作っていますで、私は問題に直面しています コードが私はプログラムを開発しているし、それが

import pandas as pd 

movie = pd.read_csv('ActionsOnly.csv') 

movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating', fill_value=0.0) 

movie_pivot.to_csv('ActionsOnly1.csv') 

を下回っているが、今私は、ユーザーの映画のテーブルを持って、csvファイルに保存されています。

は今、私は映画の類似性を見つけて、映画の映画の列に格納するコード

import math 
def cosine_similarity(v1,v2): 
    "compute cosine similarity of v1 to v2: (v1 dot v2)/{||v1||*||v2||)" 
    sumxx, sumxy, sumyy = 0, 0, 0 
    for i in range(len(v1)): 
     x = v1[i]; y = v2[i] 
     sumxx += x*x 
     sumyy += y*y 
     sumxy += x*y 

    return sumxy/(math.sqrt(sumxx)*math.sqrt(sumyy)) 
def get_values(): 
    itemList = [] 
    maxLengthList= input("Enter the number of items:\n") 
    while len(itemList) < int(maxLengthList): 
     item = input("Enter your Item to the List: ") 
     itemList.append(float(item)) 
    return itemList 


def c_main(): 
    print("\nEnter the values for the first user \n") 
    user1 = get_values() 

    print("\nEnter the values for the second user \n") 
    user2 = get_values() 

    print("\nThe cosine similarity value is", round(cosine_similarity(user1,user2),3)) 

を使用しています映画映画の類似性を取るために、そのための 値しようとしています すなわち

  movieid1  movieid2  movieid3 
movieid1 1    0.45  0.56 
movieid2 0.45    1 
movieid3 0.56       1 

私は、useridとmovieIdテーブルを含むActionsOnly.csvから値を抽出し、上記のコサイン類似度に値を入れて、結果を上のムービームービーリストに保存します。梅毒は... だから、私は私は以下のコードにPD

movie = pd.read_csv('ActionsOnly.csv') 

movie_pivot = movie.pivot_table(index='movieId', columns='movieId', values='rating', fill_value=0.0) 

movie_pivot.to_csv('Movie_Similarity_Only1.csv') 
として

輸入パンダを使用しています映画movie.csvテーブルを作成するための を知らないエラーが直面していますそのように配置されますここ

コードを実行している間、私はこれらが

line 615, in _get_level_number 
    'level number' % level) 
ValueError: The name movieId occurs multiple times, use a level number 

During handling of the above exception, another exception occurred: 

line 5, in <module> 
    movie_pivot = movie.pivot_table(index='movieId', columns='movieId', values='rating', fill_value=0.0) 
line 142, in pivot_table 
    table = agged.unstack(to_unstack) 
line 3954, in unstack 
    return unstack(self, level, fill_value) 
line 449, in unstack 
    return _unstack_multiple(obj, level) 
line 296, in _unstack_multiple 
    clocs = [index._get_level_number(i) for i in clocs] 
line 296, in <listcomp> 
    clocs = [index._get_level_number(i) for i in clocs] 
line 619, in _get_level_number 
    raise KeyError('Level %s not found' % str(level)) 
KeyError: 'Level movieId not found' 

あり、これらはエラーであると私は、このMOVに挿入される値を得るために、私の上記のcosine similarityロジックを適用するエラー に直面していますすなわち、映画テーブル。

+0

このサイトではありません私達にあなたのattemp /コード – depperm

+0

を表示ソリューション全体を提供する。これは、既存のコードの問題をデバッグするのに役立ちます。どこから始めたらいいかわからない場合は、先生と時間を過ごすか、チュートリアルを読んでください。 –

+0

ようこそStackoverflowへ。ここでは、学びたい(そして何らかの努力を払う)人を支援するためにここに来ています。私たちはあなたのコーディングを行うためのものではありません。がんばろう! – alfasin

答えて

0

テーブルをピボットすることができます。これは、あなたが必要とするフォーマットを与えるかもしれません。

ActionsOnly.csv

userId,movieId,rating 
18,9,3 
32,204,4 
49,2817,1 
62,160438,4 
70,667,5 
73,1599,1 
73,4441,3 
73,4614,3.5 
73,86142,4 
95,4636,2 
103,71,1 
118,3769,4 
150,4866,2 

としてあなたはどのような映画定格どんなユーザーを見つけるためにWAN等userIdはインデックス列で、movieIdはヘッダー行になり5のうち、

をあなたが与えた情報を考慮するとratingは値を決定するものです。それはCSVにパンダでファイルを保存するにはNaNまたはNot A Number

movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating') 

を表示する値がない場合は、単純なコマンドはありto_csv

ので

movie_pivot.to_csv('ActionsOnly_pivot.csv') 

をCSVに保存されます。

だから、あなたが必要とする完全なコードは次のとおりです。

import pandas as pd 

movie = pd.read_csv('movies.csv') 

movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating') 

movie_pivot.to_csv('movies_pivot.csv') 

また、私は強くそれは驚くほど簡単かつ論理的である、パンダについて読んでお勧めします:)

+0

コード内の行を追加する場所 – saniavi007

+0

movie.pivot_table(index =' movieId '、columns =' movieId '、values =' ratings ')を書いている場合は、私の回答 – johnashu

+0

を更新しました。それは私にエラーの束を示しています。私はmovieId- movieId列を作成し、私が計算した値を入れたいと思っています。上記のプログラムを書くと多くのエラーが発生します – saniavi007

関連する問題