Analysieren von JSON-Dateien mit Python
Seite 2: Auswertung
Dictionary auswerten
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)