Stannis
Lieutenant
- Registriert
- Juli 2011
- Beiträge
- 549
Ich stehe gerade vor der Aufgabe, eine relative kleine Datenbank über Fehler auf Rechnern mit etwa 110k Einträgen auszuwerten. Ich habe Programmiererfahrung, aber bisher noch fast nichts mit Datenauswertung getan und stümpere daher ein wenig herum.
Die Ursprungsdatenbank ist eine CSV-Datei mit Eintragsnummer, Beschreibung (string) und Kommentar (string)
Ich will aus der Eintragsnummer (enthält das Datum) und der Beschreibung informationen gewinnen. Die Beschreibung parse Ich nach Schlüsselwörtern und lege das ganze in ein .json Dokument ab (da csv leider gescheitert ist, da man dort als Eintrag keine Liste von Strings ablegen zu können scheint). So ein json-File enthält eine Liste von dictionaries, ein Eintrag sieht so aus:
Ich will darstellen, welche Problem-Keywords (z.B. "buffer" und "overflow") wie oft gepaart auftreten, wie sie sich über der Zeit verändert haben, ob ein Zusammenhang zwischen einem Problem und einem Betriebssystem oder einer Programmiersprache besteht und so weiter.
Bisher gehe Ich so vor, dass Ich mir von Hand Skripte schreibe, die den Kram berechnen, etwa hier eins um die Fehler zu zählen:
Aber mit der Herangehensweise, alles hart selbst zu coden komme Ich langsam in die Wüste. Kann mir jemand ein paar Tipps geben, wie Ich das effizienter gestalten könnte? Mir wurde mal die Library Pandas empfohlen; ist die für sowas geeignet und erleichtert sie die Arbeit, oder müsste Ich dann auch alles von Hand machen? Bisher habe Ich weitgehend mit numpy und matplotlib gearbeitet
Die Ursprungsdatenbank ist eine CSV-Datei mit Eintragsnummer, Beschreibung (string) und Kommentar (string)
Ich will aus der Eintragsnummer (enthält das Datum) und der Beschreibung informationen gewinnen. Die Beschreibung parse Ich nach Schlüsselwörtern und lege das ganze in ein .json Dokument ab (da csv leider gescheitert ist, da man dort als Eintrag keine Liste von Strings ablegen zu können scheint). So ein json-File enthält eine Liste von dictionaries, ein Eintrag sieht so aus:
Python:
{
"err": [
"overflow",
"buffer",
"remote"
],
"yr": 2002,
"os": "linux",
"plat": null,
"lang": C
},
Ich will darstellen, welche Problem-Keywords (z.B. "buffer" und "overflow") wie oft gepaart auftreten, wie sie sich über der Zeit verändert haben, ob ein Zusammenhang zwischen einem Problem und einem Betriebssystem oder einer Programmiersprache besteht und so weiter.
Bisher gehe Ich so vor, dass Ich mir von Hand Skripte schreibe, die den Kram berechnen, etwa hier eins um die Fehler zu zählen:
Python:
import json
import numpy as np
import matplotlib.pyplot as plt
errors = [{'overflow': 0}]
with open('auswertung.json') as f:
reader = json.load(f)
known_keys = []
for entry in reader:
# print(entry)
for err_in in entry['err']:
err_known = False
print(err_in)
for err_out in errors:
if err_in in err_out.keys():
print('jo')
err_out[err_in] += 1
err_known = True
if not err_known:
errors.append({err_in: 1})
print("appended: ", err_in)
with open('err_distribution.json', 'w') as f:
json.dump(errors, f, indent=4)
Aber mit der Herangehensweise, alles hart selbst zu coden komme Ich langsam in die Wüste. Kann mir jemand ein paar Tipps geben, wie Ich das effizienter gestalten könnte? Mir wurde mal die Library Pandas empfohlen; ist die für sowas geeignet und erleichtert sie die Arbeit, oder müsste Ich dann auch alles von Hand machen? Bisher habe Ich weitgehend mit numpy und matplotlib gearbeitet