【发布时间】:2021-06-02 06:21:00
【问题描述】:
1.读取 CSV 文件评级
ratings = pd.read_csv('mls/ratings.csv', encoding='latin-1')
ratings.head(3)
2。信息
user = ratings .userId.nunique()
fimId = ratings .movieId.nunique()
count_rating = len(ratings)
user, fimId, count_rating
(138493, 26744, 20000263)
3.我想创建一个评分矩阵
ratings_matrix = ratings.pivot_table(index=['movieId'],columns['userId'],values='rating').reset_index(drop=True)
ratings_matrix.fillna( 0, inplace = True )
ratings_matrix.head(5)
我是否犯了错误/不一致? 并发生错误
ValueError: Unstacked DataFrame is too big, causing int32 overflow
有一个论坛建议“缩小 .pivot() 函数的输入大小”。但我还不知道收缩的步骤。
我真的很感激所有的答案,即使只有你知道的步骤
【问题讨论】:
-
如果没有看到实际数据很难说,但是 pandas 有一个关于数据扩展的非常有用的部分:pandas.pydata.org/pandas-docs/stable/user_guide/scale.html。我会尝试 1)用较小的数据验证您的数据透视 2)丢弃不需要的数据并使用高效的数据类型,3)在必要时使用 dask(它们包含相同的
pivot_table函数,但在磁盘上而不是在内存中运行)跨度> -
请向我们展示您的数据,以帮助我们检查
int32 overflow发生的原因 -
@anon01 问题信息已更新,提前感谢您的关注
-
@Sagar 我已经更新了问题信息,提前感谢您的关注
-
请不要图片。以 df.to_dict() 为例。
标签: python jupyter-notebook anaconda