【发布时间】:2019-04-08 03:33:32
【问题描述】:
我尝试使用 scipy.sparse 从 json 文件创建一个矩阵。
我有这种方式的json文件
{"reviewerID": "A10000012B7CGYKOMPQ4L", "asin": "000100039X", "reviewerName": "Adam", "helpful": [0, 0], "reviewText": "Spiritually and mentally inspiring! A book that allows you to question your morals and will help you discover who you really are!", "overall": 5.0, "summary": "Wonderful!", "unixReviewTime": 1355616000, "reviewTime": "12 16, 2012"}
这是我的 Json 格式...更多这样的元素(基于亚马逊评论文件)
并且想要对这个矩阵执行 scipy sparse
count
object a b c d
id
him NaN 1 NaN 1
me 1 NaN NaN 1
you 1 NaN 1 NaN
我正在尝试这样做
我
mport numpy as np
import pandas as pd
from scipy.sparse import csr_matrix
df= pd.read_json('C:\\Users\\anto-\\Desktop\\university\\Big Data computing\\Ex. Resource\\test2.json',lines=True)
a= df['reviewerID']
b= df['asin']
data= df.groupby(["reviewerID"]).size()
row = df.reviewerID.astype('category', categories=a).cat.codes
col = df.asin.astype('category', categories=b).cat.codes
sparse_matrix = csr_matrix((data, (row, col)), shape=(len(a), len(b)))
从这个旧示例中读取
Efficiently create sparse pivot tables in pandas?
我的代码中有一些 deprecates 元素的错误,但我不明白如何构建这个矩阵。
这是错误日志:
FutureWarning: specifying 'categories' or 'ordered' in .astype() is deprecated; pass a CategoricalDtype instead
from ipykernel import kernelapp as app
我有点困惑。 任何人都可以给我一些建议或类似的例子吗?
【问题讨论】:
-
除非您的输入不是正确的 JSON,否则将其作为完整矩阵加载到 pandas 中有点违背了使其稀疏的目的,不是吗?我希望您对标准 Python json 模块有更好的运气。
-
通常我们会询问实际的错误和回溯,这样我们就可以准确地看到问题是什么以及它发生在哪里。您没有向我们展示真正的
JSON字符串或文件。您不显示生成的数据框。也不是生成的data, row, col数组。 -
@MadPhysicist 我想要稀疏表示来计算相似度函数。你是对的,我的 JSON 是错误的表述,我更正了。
-
@hpaulj 我尝试使用这些东西,所以我尝试了几次午餐,但在不同的时间我有不同的错误。我对解决我的问题不感兴趣,我只想了解程序,所以我可以申请所有文件。我的数据、行、列是根据链接中给出的示例创建的...我认为也不需要。
-
未来的警告并不是真正的错误。它们稍后会警告您潜在的问题,但不会阻止当前代码运行。探索的地方是 pandas 文档(它的
astype等)。但是sparse_matrix变量有问题吗?
标签: python scipy sparse-matrix