使用Pandas的pivot_table方法时出现IndexError错误。

4

系统:WIN10

IDE:ANACONDA/Jupyter Lab

语言:Python版本3.7.3

库:pandas版本1.0.1

数据源:https://grouplens.org/datasets/movielens/

数据集:movies.csv; ratings.cvs (ml-25m.zip)

我在尝试编写透视表时遇到了问题。合并的表有超过2500万个记录,我的代码一直抛出以下错误:IndexError: index 993158425 is out of bounds for axis 0 with size 993157686。

已采取的步骤:

  1. 测试数据框中nan值的形状并进行清理
  2. 在网上搜索错误代码,但未找到任何有用的信息
  3. 尝试使用各种方法编写透视表:.pivot和.pivot_table
  4. 考虑采用交叉表(crosstab)作为解决方法:这不会起作用

代码:

df1_movies = pd.read_csv('Data/movies.csv')
df1_ratings = pd.read_csv('Data/ratings.csv')

df1_main = pd.merge(df1_movies, df1_ratings, on='movieId')
table = df1_main.pivot_table(index='userId', columns='title', values='rating')

错误

IndexError: index 993158425 is out of bounds for axis 0 with size 993157686

  1. 你期望数据看起来是什么样子?
  2. 你使用的是哪个movielens数据集?我只使用了“ml-latest-small.zip”,并没有出现错误。然而,透视表中只有5行不是100%空值...
- Anders Swanson
3
也许这会有所帮助。也许当前 Pandas 中数据太大了,无法使用透视表?https://dev59.com/EVYM5IYBdhLWcg3wsxzy - David Erickson
@ David Erickson,哇!我希望不是这种情况。我刚刚阅读了关于这个git仓库的内容,似乎对话已经一年没有更新了:( - Alfred Hull
@Anders Swanson,我现在要下载那个文件集并进行测试。我正在使用更广泛的文件集:(ml-25m.zip)。由于目前没有已知的解决方法,您知道其他可以处理大矩阵的平台吗? - Alfred Hull
3
重新考虑生成包含每个不同动作标题的宽数据框,并将其放入单独的列中。您希望使用这样的设置运行什么分析? - Parfait
@ Parfait 我正在尝试构建一个交叉表矩阵,以查看哪个用户ID排名了哪部电影。有了这个矩阵,我的意图是创建一个工具,让我可以绘制排名相关性或构建聚类工具,将喜欢相似电影口味的用户ID分组。 - Alfred Hull
1个回答

1
感谢David Erickson指出了这个问题的开放性:

有一个开放的Pandas问题描述了这个错误。截至2020年8月31日,目前唯一的解决方法似乎是减少数据集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接