Mit Pandas lassen sich Daten aus unterschiedlichsten Quellen importieren. Wie die in einer CSV-Datei enthaltenen Werte in ein DataFrame übernommen werden können, hatte ich bereits in anderen Tutorials gezeigt. In diesem Artikel geht es nun um das Lesen von JSON-Dateien.
Dafür muss Pandas auf dem System installiert sein:
$ pip install pandas # Windows
$ pip3 install pandas # Linux, macOS
Der Import erfolgt mit der Zeile
import pandas as pd
Die JSON-Datei kann mit der Methode read_json()
gelesen werden. Hierdurch werden die Daten auch in ein DataFrame übernommen. Als Argument wird der Pfad zur JSON-Datei übergeben:
path = "/Users/bodo/Documents/population.json"
df = pd.read_json(path)
Befindet sich die Datei im selben Verzeichnis, reicht es aus, nur den Dateinamen zu übergeben:
df = pd.read_json("population.json")
Mit der Zeile
print(df)
werden die Daten ausgegeben. In diesem Beispiel handelt es sich um eine JSON-Datei mit Staaten und der dazugehörigen Population. Der Aufbau der Datei sie wie folgt aus:
[
{
"country": "Afghanistan",
"population": 37172386
},
{
"country": "Albania",
"population": 2866376
},
...
]
Die führt zu folgender Ausgabe:
country population
0 Afghanistan 37172386
1 Albania 2866376
2 Algeria 42228429
3 American Samoa 55465
4 Andorra 77006
Die Methode info()
liefert Informationen zu den Daten:
print(df.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 244 entries, 0 to 243
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 country 244 non-null object
1 population 244 non-null int64
dtypes: int64(1), object(1)
Das Sortieren übernimmt die Methode sort_values()
, an die mehrere Argumente übergeben werden können. In diesem Beispiel könnte dies so aussehen:
df.sort_values(
by="population",
axis=0,
ascending=True,
inplace=True,
kind='quicksort',
na_position='last'
)
by
: Angabe der Spalte, die für die Sortierung verwendet werden soll.axis:
: Die Angabe von0
bedeutet, dass es sich bei dem beiby
angegebenen Wert (hierpopulation
) um eine Spaltenbezeichnung handelt. Die Angabe von1
meint hingegen den Zeilenindex.ascending
: Es wird aufsteigend sortiert.inplace
: BeiTrue
wird das vorhandene DataFrame und nicht ein kopiertes DataFrame sortiert.kind
: Hier wird der zu verwendende Sortieralgorithmus angegeben. Standardmäßig ist diesquicksort
.na_position
: Es mag sein, dass teilweise keine Werte vorhanden sind. Überna_position
wird festgelegt, ob diese am Anfang (first
) oder am Ende (last
) der sortierten spalte angezeigt werden sollen.
Als Fazit lässt sich festhalten, dass die Datenübernahme von JSON zu Pandas sehr einfach ist. Letztendlich erledigt die Zeile
df = pd.read_json()
die ganze Arbeit, so dass die Daten sofort zur weiteren Auswertung zur Verfügung stehen. Für weitere Informationen zu dieser Methode sei auf die offizielle Dokumentation verwiesen.