Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我已经开发了这个程序,我在其中遇到了一些问题_Python_Pandas_Csv_Pandas Groupby - Fatal编程技术网

Python 我已经开发了这个程序,我在其中遇到了一些问题

Python 我已经开发了这个程序,我在其中遇到了一些问题,python,pandas,csv,pandas-groupby,Python,Pandas,Csv,Pandas Groupby,首先,我使用pandas制作一个userid 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') 现在我有了一个用户电影

首先,我使用pandas制作一个userid 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))
我想从ActionsOnly.csv中提取值,它包含userid和movieId表,并将值放在上面的余弦相似性中,结果将存储在上面的movie列表中。。整个值将被这样放置,只有。。。 所以我不知道我在哪里面对错误 为了制作movie-movie.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')
在这里运行代码时,我面临错误 这些是

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'
第615行,在获取级别编号中
'级别编号“%level”)
ValueError:名称movieId出现多次,请使用级别号
在处理上述异常期间,发生了另一个异常:
第5行,在
movie\u pivot=movie.pivot\u表(index='movieId',columns='movieId',values='rating',fill\u value=0.0)
第142行,在pivot_表中
表=累计取消堆叠(至取消堆叠)
第3954行,未堆叠
返回取消堆叠(自身、级别、填充值)
第449行,未堆叠
返回(取消堆叠)(目标,级别)
第296行,in _unstack _multiple
clocs=[索引。\获取clocs中i的级别\编号(i)]
第296行,在
clocs=[索引。\获取clocs中i的级别\编号(i)]
第619行,输入获取级别编号
raise KeyError('找不到级别%s'%str(级别))
KeyError:“找不到级别电影ID”

这些是错误,我想应用我上面的
余弦相似性
逻辑来获取将插入此电影表中的值。

您可以尝试旋转该表。这可能会给出您需要的格式

将您提供的信息视为
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
你想知道哪个用户在5部电影中给哪部电影打分

userId
是索引列,
movieId
成为标题行,
rating
决定值。如果没有值,它将显示
NaN
不是数字

movie_pivot = movie.pivot_table(index='userId', columns='movieId', values='rating')
要在Pandas中将文件保存到CSV,需要使用一个简单的命令
To\u 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
所以

将保存到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')

我还强烈建议您阅读有关熊猫的内容,这非常简单且符合逻辑:)

向我们展示您的尝试/代码此网站并不提供完整的解决方案。它用于帮助您调试现有代码的问题。如果你不知道从哪里开始,你应该花时间和导师在一起,或者读一本教程。欢迎来到Stackoverflow。我们来这里是为了帮助那些想要学习(并表现出一些努力)的人,而不是为你编写代码。祝你好运@saniavi007别泄气,这不是个坏问题。但这有助于表明你已经付出了一些努力。看一看熊猫的照片。试着用文字表达你的问题,这样就不会让人觉得你只是在要求别人为你写代码。并提供一个较小版本的数据框,该数据框仍能说明您的观点,但其他人无法理解。'import pandas as pd df=pd.read_csv('ActionsOnly.csv',names=['userId','movieId','rating'])s=df.groupby(['userId',movieId'])。size()m=s.unstack()print(m)“我能够生成如上所述的表格,但不是我希望的那个。我想把它写在一个
csv
文件上。我真的试过了,但没有成功“如果我在写movie.pivot_表(index='movieId',columns='movieId',values='ratings'),它显示了一系列错误。我想制作movieId-movieId列,并想把我计算出来的值放进去。但是在编写上述程序时,出现了这么多错误,您是否更改了csv的名称?我制作了一个文件,称之为movies.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')