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, macOSDer Import erfolgt mit der Zeile
import pandas as pdDie 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 77006Die 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 von0bedeutet, dass es sich bei dem beibyangegebenen Wert (hierpopulation) um eine Spaltenbezeichnung handelt. Die Angabe von1meint hingegen den Zeilenindex.ascending: Es wird aufsteigend sortiert.inplace: BeiTruewird 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_positionwird 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.