当前位置: 首页 > 知识库问答 >
问题:

使用单列转置的Pandas将数据集的矩阵打印到表中

古棋
2023-03-14

我在Python熊猫中使用电影镜头数据集。我需要打印矩阵的u.data一个制表符分隔文件在下面。方式

NULL    MovieID1 MovieID2 MovieID3
UserID1 Rating   Rating   Rating
UserID2 Rating   Rating   Rating

我已经通过以下链接

  1. 一个数据集非常庞大,将其放在系列中
  2. 二-未提及行的转置
  3. 三-尝试使用reindex,以便在一列中获得NaN值
  4. 四-df.ilocdf.ix也不起作用

我需要输出,因为它显示我的评级和NaN(当未评级)的电影w. r. t.用户。

    NULL    MovieID1 MovieID2 MovieID3
    UserID1 Rating   Rating   NaN
    UserID2 Rating   NaN      Rating

另外,我不介意使用numpy、crab、recsys、csv或任何其他python包的解决方案

EDIT 1-排序数据并导出,但得到一个额外的字段

df2 = df.sort_values(['UserID','MovieID'])
print type(df2)
df2.to_csv("sorted.csv")
print df2

文件产生foll.sorted.csv文件

,UserID,MovieID,Rating,TimeStamp
32236,1,1,5,874965758
23171,1,2,3,876893171
83307,1,3,4,878542960
62631,1,4,3,876893119
47638,1,5,3,889751712
5533,1,6,5,887431973
70539,1,7,4,875071561
31650,1,8,1,875072484
20175,1,9,5,878543541
13542,1,10,3,875693118

编辑2-如评论中所述

这是作为输入u.data文件中数据的格式

196 242 3   881250949
186 302 3   891717742
22  377 1   878887116
244 51  2   880606923
166 346 1   886397596
298 474 4   884182806
115 265 2   881171488
253 465 5   891628467
305 451 3   886324817

共有1个答案

公冶子安
2023-03-14

一种方法:

使用pivot_表,如果每个用户和电影id有一个值,则aggfunc无关紧要,但是如果有多个值,则选择聚合。

df.pivot_table(values='Rating',index='UserID',columns='MovieID', aggfunc='mean')

第二种方法(没有重复的用户ID,电影记录):

df.set_index(['UserID','MovieID'])['Rating'].unstack()

第三种方法(无重复的用户ID、电影ID记录):

df.pivot(index='UserID',columns='MovieID',values='Rating')

第四种方法(与第一种方法类似,您可以选择聚合方法):

df.groupby(['UserID','MovieID'])['Rating'].mean().unstack()

输出:

MovieID  1   2   3   4   5   6   7   8   9   10
UserID                                         
1         5   3   4   3   3   5   4   1   5   3
 类似资料:
  • 问题内容: 我正在自学一些Java,并且坚持创建2D数组,该数组使用随机值对其进行初始化,然后创建该数组的转置。 示例输出为: 原始矩阵 转置矩阵 ^应该是最终输出。代码的一些帮助将不胜感激! 如果行或列的数量超出指定范围,我想编写代码以生成错误消息。以及是否从命令行读取矩阵元素而不是随机生成它们。 问题答案: 这是返回转置矩阵的int [] []的简单方法… 比起打印二维矩阵,您可以使用如下方法

  • 我想在不同的列表中加入多个向量,并输出一个矩阵列表。其思想是,列表中具有相同名称的所有项目,例如所有项目,通过行作为矩阵连接起来。增加的复杂性是,这些向量可以具有不同的长度,因此实现起来并不简单;矩阵中缺少的值可以附加s。 输入列表: 我希望获得的理想输出是一个列表,其中矩阵的数量与唯一列表项的数量相同,其中每个矩阵由行绑定的不同长度的向量组成: 我将如何编写一个函数,它也可以扩展到合并具有不同长

  • 本文向大家介绍螺旋打印矩阵,包括了螺旋打印矩阵的使用技巧和注意事项,需要的朋友参考一下 该算法用于以螺旋方式打印数组元素。首先,从第一行开始,先打印全部内容,然后按照最后一列打印,然后再最后一行,依此类推,从而以螺旋方式打印元素。  该算法的时间复杂度为O(MN),M为行数,N为列数。 输入输出 算法 输入: 矩阵矩阵,行和列m和n。 输出:以螺旋方式打印矩阵的元素。 示例 输出结果

  • 我有一个尺寸为3695 X 20的数据框。第一列包含字母数字标识符,其他19列都是数字。因此,rownames(df)提供数字1-3695,colnames(df)提供列的名称。df[,1]提供字母数字标识符。 我希望将数据框转换为矩阵,并使用现有数据框的第1列作为新矩阵的行名称,并将数据框的列名保留为矩阵的列名。 我还想自动化这个过程,用于类似但不同维度的数据帧。因此,如果解决这个问题需要知道行

  • 我想用一个整数的方法打印一个螺旋矩阵。然而,我在纸上的代码运行得很好,但是当我运行时,我会得到不同的数字来代替我想要的数字。 在现实中,它应该打印如下内容 如果您能帮忙,我们将不胜感激。

  • 问题内容: 我正在尝试为python创建矩阵转置函数,但似乎无法使其工作。说我有 我想提出我的职能 因此,换句话说,如果我要将此2D数组打印为列和行,我希望将行变成列,将列变成行。 我到目前为止已经做到了,但是没有用 问题答案: Python 2: Python 3: