Konvertieren von JSON in einen Pandas DataFrame

  1. JSON zu Pandas DataFrame mit json_normalize()
  2. JSON zu Pandas DataFrame mit read_json()

In diesem Artikel wird gezeigt, wie man JSON in einen Pandas DataFrame konvertiert.

JSON steht für JavaScript Object Notation. Es basiert auf dem Format von Objekten in JavaScript und ist eine Kodierungstechnik zur Darstellung strukturierter Daten. Es ist heutzutage weit verbreitet, insbesondere für den Austausch von Daten zwischen Servern und Webanwendungen.

Aufgrund seiner Einfachheit und des Einflusses von Datenstrukturen aus Programmiersprachen erfreut sich JSON einer großen Beliebtheit. Es ist relativ einfach zu verstehen, und im Folgenden sehen Sie ein einfaches Beispiel für eine JSON-Antwort von einer API.

{
"Results":
         [
         { "id": "01", "Name": "Jay" },
         { "id": "02", "Name": "Mark" },
         { "id": "03", "Name": "Jack" }
         ],
"status": ["ok"]
}

Wie Sie in unserem Beispiel sehen können, scheint JSON eher eine Kombination aus verschachtelten Listen und Dictionaries zu sein; daher ist es relativ einfach, Daten aus JSON-Dateien zu extrahieren und sogar als Pandas DataFrame zu speichern.

Pandas und JSON-Bibliotheken in Python können dabei helfen. Wir haben zwei Funktionen read_json() und json_normalize(), die bei der Umwandlung von JSON-Strings in einen DataFrame helfen können.

JSON zu Pandas DataFrame mit json_normalize()

Die Funktion json_normalize() wird sehr häufig verwendet, um den verschachtelten JSON-String zu lesen und einen DataFrame zurückzugeben. Um diese Funktion zu verwenden, müssen wir zuerst den JSON-String mit der Funktion json.loads() aus der JSON-Bibliothek in Python lesen. Dann übergeben wir dieses JSON-Objekt an die Funktion json_normalize(), die einen Pandas DataFrame zurückgibt, der die benötigten Daten enthält.

import pandas as pd
import json
from pandas import json_normalize

data = '''
{
"Results":
         [
         { "id": "1", "Name": "Jay" },
         { "id": "2", "Name": "Mark" },
         { "id": "3", "Name": "Jack" }
         ],
"status": ["ok"]
}
    '''

info = json.loads(data)

df = json_normalize(info['Results']) #Results contain the required data
print(df)

Ausgabe:

   id  Name
0  1   Jay
1  2  Mark
2  3  Jack

JSON zu Pandas DataFrame mit read_json()

Eine weitere Pandas-Funktion zur Umwandlung von JSON in einen DataFrame ist read_json() für einfachere JSON-Strings. Wir können den Pfad einer JSON-Datei oder den JSON-String direkt an die Funktion übergeben, um Daten in einem Pandas DataFrame zu speichern. read_json() hat viele Parameter, von denen orient das Format des JSON-Strings angibt.

Der Nachteil ist, dass es schwierig ist, mit verschachtelten JSON-Strings zu arbeiten. Daher werden wir für die Verwendung von read_json() ein viel einfacheres Beispiel wie unten gezeigt verwenden:

import pandas as pd

data = '''
          {
              "0":{
                  "Name": "Jay",
                  "Age": "17"
              },
              "1":{
                  "Name": "Mark",
                  "Age": "15"
              },
              "2":{
                  "Name": "Jack",
                  "Age":"16"
              }
          }
    '''

df = pd.read_json(data, orient ='index')
print(df)

Ausgabe:

   Name  Age
0   Jay   17
1  Mark   15
2  Jack   16

Wir setzen orient auf 'index', weil der JSON-String vonat mit dem Muster als {index: {column: value}} übereinstimmt.

Verwandter Artikel - Pandas DataFrame

  • JSON-Datei in Pandas laden
  • Wie man die NaN-Vorkommen in einer Spalte im Pandas-DataFrame zählt
  • Verwandter Artikel - Pandas JSON

  • Wie man Pandas-DataFrame in ein Numpy-Array konvertiert
  • Wie man eine Zeile basierend auf einem Spaltenwert in Pandas DataFrame löscht