Scipy разреженный из файла JSON - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь создать с помощью 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 ... больше подобных элементов (на основе файла Amazon Review)

и хочу выполнить скудный разбор у этой матрицы

    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)))

чтение из этого старого примера

Эффективно создавать разреженные сводные таблицы в пандах?

У меня есть ошибка для устаревшего элемента в моем коде, но я не понимаю, как построить эту матрицу.

это журнал ошибок:

 FutureWarning: specifying 'categories' or 'ordered' in .astype() is deprecated; pass a CategoricalDtype instead
  from ipykernel import kernelapp as app

Я немного растерялся. Кто-нибудь может дать мне какое-нибудь предложение или подобный пример?

1 Ответ

0 голосов
/ 04 ноября 2018

Для получения разреженной матрицы, которая выглядит как

    count            
object       a   b   c   d
id                   
him       NaN   1 NaN   1
me          1 NaN NaN   1
you         1 NaN   1 NaN

Вам нужно сгенерировать 3 массива, например:

In [215]: from scipy import sparse
In [216]: data = np.array([1,1,1,1,1,1])
In [217]: row = np.array([1,2,0,2,0,1])
In [218]: col = np.array([0,0,1,2,3,3])
In [219]: M = sparse.csr_matrix((data, (row, col)), shape=(3,4))
In [220]: M
Out[220]: 
<3x4 sparse matrix of type '<class 'numpy.int64'>'
    with 6 stored elements in Compressed Sparse Row format>
In [221]: M.A
Out[221]: 
array([[0, 1, 0, 1],
       [1, 0, 0, 1],
       [1, 0, 1, 0]], dtype=int64)

Такие категории, как «он», «я», «вы», должны быть сопоставлены с уникальными индексами, такими как 0,1,2. Аналогично для «a», «b», «c», «d».

...