Лучший способ импортировать данные Nested JSON в Dataframes или Dictionary? - PullRequest
0 голосов
/ 12 июля 2020

Мне интересно, есть ли у кого-нибудь предложение о том, как импортировать вложенные JSON данные в качестве Dataframe или словаря? Соответствующие данные обычно доступны здесь - https://ped.uspto.gov/peds/.

Вот пример формата данных:

{
   "PatentBulkData":[ 
      {
         "patentCaseMetadata":{
            "applicationNumberText":{
               "value":"16732342",
               "electronicText":"16732342"
            },
            "filingDate":"2020-01-01",
            "applicationTypeCategory":"Utility",
            "partyBag":{
               "applicantBagOrInventorBagOrOwnerBag":[
                  {
                     "primaryExaminerOrAssistantExaminerOrAuthorizedOfficer":[
                        {
                           "name":{
                              "personNameOrOrganizationNameOrEntityName":[
                                 {
                                    "personFullName":"VO, PETER DUNG BA"
                                 }
                              ]
                           }
                        }
                     ]
                  },
                  {
                     "applicant":[
                        {
                           "contactOrPublicationContact":[
                              {
                                 "name":{
                                    "personNameOrOrganizationNameOrEntityName":[
                                       {
                                          "organizationStandardName":{
                                             "content":[
                                                "CYNTEC CO., LTD."
                                             ]
                                          }
                                       }
                                    ]
                                 },
                                 "cityName":"Hsinchu",
                                 "geographicRegionName":{
                                    "value":"",
                                    "geographicRegionCategory":"STATE"
                                 },
                                 "countryCode":"TW"
                              }
                           ]
                        }
                     ]
                  }
               ]
            },
            "groupArtUnitNumber":{
               "value":"3729",
               "electronicText":"3729"
            },
            "applicationConfirmationNumber":"1040",
            "applicantFileReference":"6101.179US",
            "patentClassificationBag":{
               "cpcClassificationBagOrIPCClassificationOrECLAClassificationBag":[
                  {
                     "ipOfficeCode":"US",
                     "mainNationalClassification":{
                        "nationalClass":"029",
                        "nationalSubclass":"602100"
                     }
                  }
               ]
            },
            "businessEntityStatusCategory":"UNDISCOUNTED",
            "firstInventorToFileIndicator":"true",
            "inventionTitle":{
               "content":[
                  "INDUCTOR WITH AN ELECTRODE STRUCTURE"
               ]
            },
            "applicationStatusCategory":"Docketed New Case - Ready for Examination",
            "applicationStatusDate":"2020-04-27",
            "officialFileLocationCategory":"ELECTRONIC",
            "patentPublicationIdentification":{
               "publicationNumber":"US20200135386A1",
               "publicationDate":"2020-04-30"
            }
         },
         "assignmentDataBag":{
            "assignmentData":[
               {
                  "reelNumber":"51406",
                  "frameNumber":"55",
                  "documentReceivedDate":"2020-01-03",
                  "recordedDate":"2020-01-03",
                  "mailDate":"2020-01-06",
                  "pageTotalQuantity":3,
                  "conveyanceText":"ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).",
                  "assignorBag":{
                     "assignor":[
                        {
                           "executionDate":"2020-01-02",
                           "contactOrPublicationContact":[
                              {
                                 "name":{
                                    "personNameOrOrganizationNameOrEntityName":[
                                       {
                                          "value":"LEE, CHI-HSUN"
                                       }
                                    ]
                                 }
                              }
                           ]
                        },
                        {
                           "executionDate":"2020-01-02",
                           "contactOrPublicationContact":[
                              {
                                 "name":{
                                    "personNameOrOrganizationNameOrEntityName":[
                                       {
                                          "value":"HSIEH, HSIEH-SHEN"
                                       }
                                    ]
                                 }
                              }
                           ]
                        },
                        {
                           "executionDate":"2020-01-02",
                           "contactOrPublicationContact":[
                              {
                                 "name":{
                                    "personNameOrOrganizationNameOrEntityName":[
                                       {
                                          "value":"CHEN, SEN-HUEI"
                                       }
                                    ]
                                 }
                              }
                           ]
                        }
                     ]
                  },
                  "assigneeBag":{
                     "assignee":[
                        {
                           "contactOrPublicationContact":[
                              {
                                 "name":{
                                    "personNameOrOrganizationNameOrEntityName":[
                                       {
                                          "value":"CYNTEC CO., LTD."
                                       }
                                    ]
                                 },
                                 "postalAddressBag":{
                                    "postalAddress":[
                                       {
                                          "postalAddressText":[
                                             {
                                                "sequenceNumber":"1",
                                                "value":"NO. 2, RESEARCH & DEVELOPMENT 2ND RD."
                                             },
                                             {
                                                "sequenceNumber":"2",
                                                "value":"SCIENCE PARK"
                                             },
                                             {
                                                "sequenceNumber":"3",
                                                "value":"HSINCHU TAIWAN"
                                             }
                                          ]
                                       }
                                    ]
                                 }
                              }
                           ]
                        }
                     ]
                  },
                  "correspondenceAddress":{
                     "partyIdentifierOrContact":[
                        {
                           "name":{
                              "personNameOrOrganizationNameOrEntityName":[
                                 {
                                    "value":"LITRON INTERNATIONAL PATENT & TRADEMARK OFFICE"
                                 }
                              ]
                           },
                           "postalAddressBag":{
                              "postalAddress":[
                                 {
                                    "postalAddressText":[
                                       {
                                          "sequenceNumber":"1",
                                          "value":"11F.-2, NO.248, SEC. 3, NANJING E. RD."
                                       },
                                       {
                                          "sequenceNumber":"2",
                                          "value":"TAIPEI CITY,  TAIWAN"
                                       }
                                    ]
                                 }
                              ]
                           }
                        }
                     ]
                  },
                  "sequenceNumber":"1"
               }
            ],
            "assignmentTotalQuantity":1
         },
         "st96Version":"V3_1",
         "ipoVersion":"US_V8_0"
      },

Я ввожу данные со следующим:

import json
import pandas as pd

with open('/content/drive/My Drive/2020.json') as json_file:
  data = json.load(json_file)

Хотя это действительно создает словарь, он вводится в «PatentBulkData». Таким образом, оставшаяся часть данных представляет собой список. Другими словами, когда я запускаю

print(type(data['PatentBulkData']))

Типом является «список».

В идеале я хотел бы go вниз еще на один уровень, чтобы создать словарь на основе в тексте номера заявки, имени эксперта и сумке с историей обвинения (пример с сумкой истории судебного преследования можно найти здесь - Лучший способ извлечения / форматирования данных в формате JSON с использованием Python? ).

Цель этого состоит в том, чтобы привести данные в такой формат, чтобы я мог проводить аналитику на основе экзаменатора, кандидата и т. Д. c.

Я считаю, что данные также доступны в * Формат 1031 * - не будет ли XML проще?

Будем признательны за любые предложения. Спасибо!

1 Ответ

0 голосов
/ 13 июля 2020

Ищете команду json_normalize. Документация Pandas для этого довольно хороша - https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html

Так, например, вы хотели бы сделать что-то вроде:

import json
import pandas as pd
from pandas import json_normalize

with open('/content/drive/My Drive/2020.json') as json_file:
  data = json.load(json_file)

df = json_normalize(data, max_level=1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...