Analysieren von JSON-Dateien mit Python

Seite 2: Auswertung

Inhaltsverzeichnis

Den Namen der verwendeten Programmiersprache findet man in der JSON-Datei von GitHub im Element 'language'. Um alles relativ einfach zu halten, verzichtet das Beispiel darauf, nachzuforschen, in welchem Zusammenhang die Information "Programmiersprache" steht. Eine Auswertung ermittelt einfach, wie oft eine bestimmte Sprache auftaucht, egal wann und wo:

result={} #Ergebnis

def search(p):
if type(p) is dict: # im Dictionary nach 'language' suchen
if 'language' in p:
a=p['language']
if not a is None:
if a in result: #Programmiersprache hochzählen
result[a]=result[a]+1
else:
result[a]=1
else:
for i in p:
search(p[i]) #in den anderen Elementen weiter suchen

for p in data: #fĂĽr jede Aktion auf GitHub
search(p)
print(result)
{'CSS': 64, 'TeX': 2, 'DM': 11, 'D': 2, 'Idris': 2, 'CoffeeScript': 2,
'Python': 124, 'Scala': 10, 'Makefile': 5, 'Objective-C': 3, 'Logos': 2,
'Processing': 3, 'Lua': 16, 'Ruby': 102, 'Coq': 4, 'C#': 41, 'Julia': 12,
'Emacs Lisp': 5, 'Java': 67, 'SourcePawn': 2, 'C++': 70, 'Kotlin': 2,
'Shell': 31, 'Rust': 38, 'JavaScript': 202, 'Perl': 27, 'R': 2,
'PowerShell': 2, 'PHP': 106, 'Swift': 2, 'Go': 14, 'Haskell': 5,
'OCaml': 8, 'C': 50, 'F#': 2, 'VimL': 1}

Allein ein Dictionary zu sortieren, ist etwas aufwendig. Für Analysen und der danach folgenden Visualisierung der Ergebnisse gibt es spezielle Module, etwa das häufig verwendete pandas:

import pandas as pd
df = pd.DataFrame(sorted(result.items(), key = lambda x: x[1],
reverse=True)) #Absteigend nach der Anzahl sortieren
df = df[:20] #Auf 20 Elemente reduzieren
df
0 1
0 JavaScript 202
1 Python 124
2 PHP 106
3 Ruby 102
4 C++ 70
5 Java 67
6 CSS 64
7 C 50
8 C# 41
9 Rust 38
10 Shell 31
11 Perl 27
12 Lua 16
13 Go 14
14 Julia 12
15 DM 11
16 Scala 10
17 OCaml 8
18 Makefile 5
19 Emacs Lisp 5

Heraus kommt also, dass Python auf dem zweiten Platz steht, zumindest in der Stunde, deren Aktivitäten in der heruntergeladenen JSON-Datei enthalten sind. Natürlich lässt sich von den Daten über die Aktivitäten einer Stunde auf GitHub die tatsächliche Verbreitung von Python nicht verallgemeinern. Ganz klar kann man aber daran ablesen, dass gerade bei innovativen Projekten, und um die handelt es sich bei den freien Projekten, Python eine wichtige Rolle spielt. Gerade die Unabhängigkeit von Hersteller und Betriebssystem machen sich hier bemerkbar.

Wie dieses einfache Analysebeispiel zeigt, sind in Python vielfältige Möglichkeiten zur Verarbeitungvon JSON-Dateien vorhanden. Die Tücke steckt oft im Detail.

Gerhard Völkl
ist auf dem Weg des Python Ninja unterwegs. Die restliche Zeit arbeitet er als IT-Journalist und Softwareentwickler.
(ane)