JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentäminen oikealla tavalla - KDnuggets

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentäminen oikealla tavalla – KDnuggets

Lähdesolmu: 3093512

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentä ne oikealla tavalla
Kuva tekijältä
 

Sukeltaessasi tietotieteen ja koneoppimisen maailmaan, yksi kohtaamistasi perustaidoista on datan lukemisen taito. Jos sinulla on jo kokemusta siitä, olet todennäköisesti perehtynyt JSON:iin (JavaScript Object Notation) – suosittu muoto sekä tietojen tallentamiseen että vaihtoon. 

Ajattele, kuinka NoSQL-tietokannat, kuten MongoDB, rakastavat tietojen tallentamista JSONiin tai kuinka REST-sovellusliittymät reagoivat usein samassa muodossa.

Vaikka JSON sopii täydellisesti varastointiin ja vaihtoon, se ei kuitenkaan ole aivan valmis syvälliseen analyysiin raakamuodossaan. Tässä muutamme sen joksikin analyyttisemmäksi - taulukkomuotoiseksi. 

Olitpa siis tekemisissä yksittäisen JSON-objektin tai niiden ihastuttavan joukon kanssa, Pythonin termein käsittelet pääasiassa sanelua tai saneluluetteloa. 

Tutkitaan yhdessä, miten tämä muutos etenee, tehden tietomme valmiiksi analysoitavaksi ????

Tänään selitän taikakomennon, jonka avulla voimme helposti jäsentää minkä tahansa JSON-tiedoston taulukkomuotoon sekunneissa. 

Ja se on… pd.json_normalize()

Katsotaanpa, kuinka se toimii erityyppisten JSON-tiedostojen kanssa. 

Ensimmäinen JSON-tyyppi, jonka kanssa voimme työskennellä, ovat yksitasoiset JSON-tiedostot, joissa on muutamia avaimia ja arvoja. Määrittelemme ensimmäiset yksinkertaiset JSON-tiedostomme seuraavasti:

Kirjoittajan koodi

Joten simuloidaan tarvetta työskennellä näiden JSON-tiedostojen kanssa. Tiedämme kaikki, että heidän JSON-muodossaan ei ole paljon tekemistä. Meidän on muutettava nämä JSON-tiedostot johonkin luettavaan ja muokattavaan muotoon… mikä tarkoittaa Pandas DataFrame -kehyksiä!

1.1 Yksinkertaisten JSON-rakenteiden käsittely

Ensin meidän on tuotava pandaskirjasto ja sitten voimme käyttää komentoa pd.json_normalize() seuraavasti:

import pandas as pd
pd.json_normalize(json_string)

 

Kun käytät tätä komentoa JSON-tiedostoon yhdellä tietueella, saamme yksinkertaisimman taulukon. Kuitenkin, kun tietomme ovat hieman monimutkaisempia ja sisältävät luettelon JSON-tiedostoista, voimme silti käyttää samaa komentoa ilman muita komplikaatioita ja tulos vastaa taulukkoa, jossa on useita tietueita.

 

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentä ne oikealla tavalla
Kuva tekijältä
 

Helppoa… eikö? 

Seuraava luonnollinen kysymys on, mitä tapahtuu, kun osa arvoista puuttuu. 

 1.2 Nolla-arvojen käsittely

Kuvittele, että joitain arvoja ei ilmoiteta, kuten esimerkiksi Davidin tulotietue puuttuu. Kun muunnamme JSON:n yksinkertaiseksi panda-tietokehykseksi, vastaava arvo näkyy nimellä NaN. 

 

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentä ne oikealla tavalla
Kuva tekijältä 
 
Entä jos haluan vain osan pelloista?

 1.3 Valitse vain kiinnostavat sarakkeet

Jos haluamme vain muuntaa tietyt kentät taulukkomuotoiseksi pandas DataFrame -kehykseksi, json_normalize()-komento ei salli meidän valita, mitä kenttiä muunnetaan. 

Siksi JSON:lle tulisi suorittaa pieni esikäsittely, jossa suodatamme vain kiinnostavat sarakkeet. 

# Fields to include
fields = ['name', 'city']

# Filter the JSON data
filtered_json_list = [{key: value for key, value in item.items() if key in fields} for item in simple_json_list]

pd.json_normalize(filtered_json_list)

 

Joten siirrytään kehittyneempään JSON-rakenteeseen. 

Kun käsittelemme monitasoisia JSON-tiedostoja, huomaamme, että sisäkkäiset JSON-tiedostot ovat eri tasoilla. Toimenpide on sama kuin aiemmin, mutta tässä tapauksessa voimme valita kuinka monta tasoa haluamme muuttaa. Oletusarvon mukaan komento laajentaa aina kaikki tasot ja luo uusia sarakkeita, jotka sisältävät kaikkien sisäkkäisten tasojen ketjutetut nimet. 

Joten jos normalisoimme seuraavat JSONit.

Kirjoittajan koodi

Kenttätaitojen alle saamme seuraavan taulukon, jossa on 3 saraketta: 

  • taidot.python
  • taidot.SQL
  • taidot.GCP

ja 4 saraketta kenttäroolien alla 

  • roolit.projektipäällikkö
  • roolit.data-insinööri
  • roolit.tietotieteilijä
  • roolit.data-analyytikko

 

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentä ne oikealla tavalla
Kuva tekijältä 
 

Kuvittele kuitenkin, että haluamme vain muuttaa huipputasoamme. Voimme tehdä sen määrittämällä parametrin max_level arvoksi 0 (max_level, jota haluamme laajentaa). 

pd.json_normalize(mutliple_level_json_list, max_level = 0)

 

Odottavat arvot säilytetään JSONissa pandas DataFrame -kehyksessä.

 

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentä ne oikealla tavalla
Kuva tekijältä 

Viimeinen tapaus, jonka voimme löytää, on sisäkkäinen luettelo JSON-kentässä. Joten määritämme ensin käytettävät JSON-tiedostomme. 

Kirjoittajan koodi

Voimme hallita näitä tietoja tehokkaasti käyttämällä Pandasia Pythonissa. Funktio pd.json_normalize() on erityisen hyödyllinen tässä yhteydessä. Se voi litistää JSON-tiedot, mukaan lukien sisäkkäisen luettelon, jäsenneltyyn muotoon, joka sopii analysointiin. Kun tätä toimintoa käytetään JSON-tietoihimme, se tuottaa normalisoidun taulukon, joka sisältää sisäkkäisen luettelon osana kenttiään.

Lisäksi Pandas tarjoaa mahdollisuuden kehittää tätä prosessia edelleen. Käyttämällä parametria record_path parametrissa pd.json_normalize(), voimme ohjata funktion erityisesti normalisoimaan sisäkkäisen luettelon. 

Tämä toiminto johtaa siihen, että luettelon sisällölle on varattu taulukko. Oletuksena tämä prosessi avaa vain luettelon elementit. Voit kuitenkin rikastaa tätä taulukkoa lisäkontekstilla, kuten säilyttää kullekin tietueelle liittyvän tunnuksen, käyttämällä meta-parametria.

 

JSON-tiedostojen muuntaminen Pandas DataFrame -kehyksiksi: jäsentä ne oikealla tavalla
Kuva tekijältä

Yhteenvetona voidaan todeta, että JSON-tietojen muuntaminen CSV-tiedostoiksi Pythonin Pandas-kirjastolla on helppoa ja tehokasta.

JSON on edelleen yleisin muoto nykyaikaisessa tietojen tallentamisessa ja vaihdossa, erityisesti NoSQL-tietokannassa ja REST API:issa. Se kuitenkin asettaa tärkeitä analyyttisiä haasteita käsiteltäessä dataa sen raakamuodossa. 

Pandasin pd.json_normalize()-funktion keskeinen rooli tulee esiin erinomaisena tapana käsitellä tällaisia ​​muotoja ja muuntaa tietomme pandan DataFrame-kehykseksi. 

Toivon, että tämä opas oli hyödyllinen, ja kun seuraavan kerran käsittelet JSONia, voit tehdä sen tehokkaammin. 

Voit tarkistaa vastaavan Jupyter-muistikirjan GitHub-repon jälkeen.
 
 

Josep Ferrer on analytiikkainsinööri Barcelonasta. Hän valmistui fysiikan insinööriksi ja työskentelee tällä hetkellä tietotieteen alalla, jota sovelletaan ihmisen liikkuvuuteen. Hän on osa-aikainen sisällöntuottaja, joka keskittyy tietotieteeseen ja teknologiaan. Voit ottaa häneen yhteyttä LinkedIn, Twitter or Keskikokoinen.

Aikaleima:

Lisää aiheesta KDnuggets